Python CGIスクリプトでフォームデータを処理する基本手法を解説
PythonのCGI(Common Gateway Interface)を使うと、HTMLフォームから送信されたデータをサーバーサイドで受け取り、動的に処理することができます。本記事では、姓名の入力を受け付けるシンプルなフォームを例に、その基本的な実装方法を解説します。
1. HTMLフォームの作成
まず、以下のようなHTMLフォームを用意します。このフォームは、ユーザーが入力した姓名(FirstName・LastName)を、POSTメソッドで「getData.py」へ送信します。
<form action="getData.py" method="post"> FirstName: <input type="text" name="first_name"> LastName: <input type="text" name="last_name"> <input type="submit" value="go"> </form>
action属性にはデータの送信先となるスクリプト名「getData.py」を指定し、method属性には「post」を設定しています。「go」ボタンをクリックすると、入力された内容がgetData.pyに渡されます。
2. Python CGIスクリプトの実装
次に、フォームから送信されたデータを受け取って画面に表示するPythonスクリプト「getData.py」を作成します。
#!C:\Python27\python.exe
# CGI処理用モジュールをインポート
import cgi, cgitb
# FieldStorageインスタンスを作成
form = cgi.FieldStorage()
# フォームから各フィールドのデータを取得
first_name = form.getvalue('first_name')
last_name = form.getvalue('last_name')
print("Content-type:text/html")
print
print("")
print("")
print("Hello - Second CGI Program")
print("")
print("")
print("
Hello %s %s
" % (first_name, last_name))
print("")
print("")
3. コードのポイント解説
- 1行目のシバン(shebang)
サーバー上でこのスクリプトを実行するPythonインタープリタのパスを指定しています。環境に応じてパスを変更してください。 - cgiモジュールとcgitbモジュール
cgiモジュールはフォームデータの解析に使用します。cgitbモジュールを有効にしておくと、エラー発生時に詳細なトレースバックがブラウザに表示されるため、デバッグに役立ちます。 - cgi.FieldStorage()
POSTまたはGETで送信されたフォームデータを格納するオブジェクトです。このインスタンスを通じて各入力項目にアクセスできます。 - getvalue()メソッド
name属性(first_name、last_name)に対応する値を取得します。該当するデータがない場合はNoneが返されます。 - Content-typeヘッダー
CGIスクリプトは必ず最初にHTTPヘッダーを出力する必要があります。ここではHTMLを出力するため「text/html」を指定しています。ヘッダーの後には空行が必要な点にも注意しましょう。
4. 動作の流れ
- ユーザーがHTMLフォームに姓名を入力し、「go」ボタンをクリックします。
- 入力データがPOSTメソッドでgetData.pyに送信されます。
- getData.pyがFieldStorageを使ってデータを解析・取得します。
- 取得した姓名を組み込んだ「Hello 名前 苗字」という挨拶ページが生成され、ブラウザに表示されます。
補足:現代の開発環境について
なお、Pythonの標準ライブラリであるcgiモジュールは、Python 3.11で非推奨となり、Python 3.13では削除されました。現在のWeb開発では、FlaskやDjangoといったフレームワークを使用するのが一般的です。これらを使えば、フォーム処理をより安全かつ簡潔に実装できます。ただし、レガシーシステムの保守やCGIの仕組みの学習という観点では、本記事の内容は今でも有用な基礎知識となります。
-
Pythonでテキストエリア(TEXTAREA)のデータをCGIプログラムに渡す方法
複数行のテキストデータをCGIプログラムに送信したい場合には、HTMLのTEXTAREA要素を使用します。TEXTAREAは、ユーザーが自由に複数行の文章を入力できる入力欄を提供し、その内容は通常のテキストフィールドと同じようにCGIプログラムへ渡されます。 TEXTAREAを使ったフォームのHTMLコード例 以下は、TEXTAREAボックスを含むフォームのHTMLコード例です。 <form action = "/cgi-bin/textarea.py" method = "post" target = "_blank">
-
Python Tkinterで作る簡単な登録フォーム入門
Tkinterは、GUI(グラフィカルユーザーインターフェース)を開発するためのPython標準ライブラリです。Tkinterを使うことで、ウィンドウをはじめとするさまざまなUI(ユーザーインターフェース)要素を持つデスクトップアプリケーションを作成できます。推奨されているPython 3.xを使用している場合、TkinterはPythonに標準搭載されているパッケージなので、追加のインストールは一切不要です。この記事では、まずTkinterの基本的なGUIアプリケーションの作り方を解説し、その後、実際の登録フォームやローン金利計算ツールといった実用的な例まで段階的に見ていきます。シンプルなG