フォームからのデータ取得


Pythonにはcgiモジュールが用意されていて、これを使うとCGIで必要な機能が簡単に使えます。ここでは、CGIでよく行われるフォームからの入力処理について述べます。

まず、FiledStorageクラスをインスタンス化して、クライアントから送られてきたフォーム内容を取得できるようにします。送られてきた内容に目的のデータがあるかをhas_keyメソッドで確認し、もしあればその値を取得します。リスト1は単純に送られてきたデータを送り返すだけの簡単なプロラムです。

リスト1

# CGI Test
import cgi

print "Content-Type: text/html\n\n"

print "<html><body>"

form = cgi.FieldStorage()
form_ok = 0
if form.has_key("name") and form.has_key("addr") :
  form_ok = 1
if form_ok == 0 :
  print "<h1>ERROR</h1>"
else :
  print "<h2>Result</h2><hr><p>"
  print "<p><b>name: </b>", form["name"].value
  print "<p><b>addr: </b>", form["addr"].value

print "</body></html>"

リスト2はクライアント側のフォーム内容です。

リスト2

<html>
<head>
<title>Python CGI Test(1)</title>
</head>

<body>
<h1>Python CGI Test(1)</h1><hr><p>

<form name = "Form1" method="POST" action="/cgi-bin/cgitest1.py">
name: <input type="text" size=30 name="name"><p>
addr: <input type="text" size=30 name="addr"><p>
<input type="submit" value="submit" name="button1"><p>
</form>
</body>
</html>

図1にフォームの表示、図2にCGI実行結果を示します。

図1 フォームの表示例

図2 結果の表示例