カテゴリー別アーカイブ: Python

Python CGI

IoTのサーバ側の準備をしようと思います。
このブログは、レンタルサーバを利用しています。格安のロリポップのロリポプランを使用しています。
http://lolipop.jp/
CGIが使えるのでサーバアプリを構築します。
言語としてはPerl 、Ruby、Pythonが利用できます。本当は、node.jsが使いたかったのですが対応していないので、一番使用者が多そうなPythonを利用します。Pythonは、2.5と2.7が用意されていますが、2.7でCGIを作成します。

test.pyの例
http://spineedge.com/CGI/test.py
###############################
#!/usr/bin/python2.7
# coding: UTF-8

print “Content-Type: text/plain”
print
print “Hello World! Python CGI!”
################################

1行目がpythonのインストールパスです。
#!/usr/bin/python2.7
2行目がファイルの文字コードの指定です。ここではutf-8 を指定しています。ファイルに保存するときは UTF-8 で保存してください。
print “Content-TypContent-Typeは送信されたデータの内容がどのようなものかを示します。
出力する内容はテキスト(text/plain)であることを示しています。
HTML文書の時は text/html を指定します。
print7行目はヘッダと本体(ブラウザに表示される部分)を分ける空行です。
print “Hello World!Python CGI!”
8行目はブラウザに出力する文字ダブルクオーテーション3つ(“””)で囲むと、複数行にわたる文字列を記述できます。
Pythonでは、ソースコードのうち#から文末がコメントと見なされます。 また、ソースコードの先頭にある「#!」で始まる文はLinux等で動かす時のPythonのパス、「#coding:」で始まる文はソースコードに用いる文字コードの指定に使います。

HTTPでのデータのやり取りを行ってみます。
GET/POSTの例
###############################
#!/usr/bin/python2.7
# coding: UTF-8
# ゲット、ポストテスト
import cgi
import os
print “Content-Type: text/html¥n”
print “<html>”
print “<head><title>SETTING TEST</title> </head>”
print “<body>”
html=”””<h1>Setting Form</h1>
<hr>
<form name=”Form” method=”GET” action=”./settest.py”>
name: <input type=”text” size=”30″ name=”name”>
mail: <input type=”text” size=”30″ name=”e-mail”>
<input type=”submit” value=”GET submit” name=”button”></form>
<form name=”Form” method=”POST” action=”./settest.py”>
name: <input type=”text” size=”30″ name=”name”>
e-mail: <input type=”text” size=”30″ name=”e-mail”>
<input type=”submit” value=”POST submit” name=”button”></form>
“””
print html
form = cgi.FieldStorage()
form_check = 0
if form.has_key(“name”) and form.has_key(“e-mail”) :
form_check = 1
if form_check == 0 :
print “<h2></h2>”
else :
if os.environ[‘REQUEST_METHOD’] == “GET” :
print “<h2>GET METHOD</h2>”
elif os.environ[‘REQUEST_METHOD’] == “POST” :
print “<h2>POST METHOD</h2>”

print “<b>name: </b>”, form[“name”].value
print “<b>e-mail: </b>”, form[“e-mail”].value
print “</body></html>”
################################

GETメソッドでもPOSTメソッドでもほとんどコードに違いはありません。
サンプルを以下URLに入れました。
http://spineedge.com/CGI/settest.py
CGI

© 2014 Spineedge Corporation.