チェックボックスのデータをPython CGIスクリプトに渡す方法をわかりやすく解説
CGIプログラムへチェックボックスのデータを渡す方法
チェックボックスは、複数の選択肢の中から任意の数の項目を選ばせたい場合に使用されるフォーム部品です。ラジオボタンとは異なり、ユーザーは複数の項目を同時にオン・オフできます。
チェックボックスを含むHTMLフォームの例
まず、2つのチェックボックスを持つフォームのHTMLコード例を見てみましょう。
<form action = "/cgi-bin/checkbox.cgi" method = "POST" target = "_blank"> <input type = "checkbox" name = "maths" value = "on" /> 数学 <input type = "checkbox" name = "physics" value = "on" /> 物理 <input type = "submit" value = "科目を選択" /> </form>
このコードをブラウザで表示すると、次のようなフォームが描画されます。
数学 物理 科目を選択
チェックボックスの入力を処理するcheckbox.cgiスクリプト
続いて、Webブラウザから送信されたチェックボックスのデータを受け取り、処理する「checkbox.cgi」スクリプトの例です。
#!/usr/bin/python
# CGI処理用のモジュールをインポート
import cgi, cgitb
# FieldStorageのインスタンスを作成
form = cgi.FieldStorage()
# 各フィールドからデータを取得
if form.getvalue('maths'):
math_flag = "ON"
else:
math_flag = "OFF"
if form.getvalue('physics'):
physics_flag = "ON"
else:
physics_flag = "OFF"
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>チェックボックス - CGIプログラムの例</title>"
print "</head>"
print "<body>"
print "<h2> 数学のチェックボックス : %s</h2>" % math_flag
print "<h2> 物理のチェックボックス : %s</h2>" % physics_flag
print "</body>"
print "</html>"
スクリプトのポイント解説
- cgi.FieldStorage():POSTまたはGETで送信されたフォームデータを格納するインスタンスを作成します。
- form.getvalue('maths'):指定したname属性のチェックボックスがオンになっている場合のみ値を返します。未選択の場合はNoneが返るため、if文でON/OFFを簡単に判定できます。
- Content-typeヘッダー:CGIスクリプトは、HTML本体を出力する前に必ずこのヘッダーを出力する必要があります。これにより、ブラウザが返却データをHTMLとして正しく解釈できます。
なお、上記のスクリプトはPython 2の構文(print文)で記述されています。Python 3環境で実行する場合は、print()関数形式に書き換えてください。また、cgiモジュールはPython 3.13で標準ライブラリから削除されているため、新規の開発ではFlaskやDjangoなどのWebフレームワークの利用を検討するのも良いでしょう。
-
Pythonでウィキペディアのデータを抽出する方法を徹底解説
この記事では、Pythonを使ってウィキペディアのデータを抽出する方法を詳しく解説します。PythonはWebスクレイピングの分野で広く活用されており、Webサイトからメタ情報を収集するツールの開発に非常に適した言語です。 本記事では、Wikipedia APIとwikipediaライブラリを使用して、ウィキペディアのソースURLからデータを取得します。APIを利用することで、指定したURLから簡単にデータをフェッチでき、その後、対象のURLに対してメソッドを呼び出して、取得した情報を画面に出力することができます。 事前準備:wikipediaライブラリのインストール ウィキペディアからデータ
-
Pythonでテキストエリア(TEXTAREA)のデータをCGIプログラムに渡す方法
複数行のテキストデータをCGIプログラムに送信したい場合には、HTMLのTEXTAREA要素を使用します。TEXTAREAは、ユーザーが自由に複数行の文章を入力できる入力欄を提供し、その内容は通常のテキストフィールドと同じようにCGIプログラムへ渡されます。 TEXTAREAを使ったフォームのHTMLコード例 以下は、TEXTAREAボックスを含むフォームのHTMLコード例です。 <form action = "/cgi-bin/textarea.py" method = "post" target = "_blank">