Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでGETメソッドを使用して情報を渡す方法【CGIプログラミング入門】

GETメソッドとは

GETメソッドは、エンコードされたユーザー情報をページリクエストに付加して送信する方式です。ページのURLとエンコードされた情報は「?」記号で区切られます。

https://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2

GETメソッドは、ブラウザからWebサーバーへ情報を渡す際のデフォルトの方法であり、送信した内容はブラウザのアドレスバー(Locationボックス)に長い文字列として表示されます。そのため、パスワードなどの機密情報をサーバーに送る場合には、GETメソッドは絶対に使用しないでください。

また、GETメソッドにはサイズ制限があり、1回のリクエストで送信できる文字列は1024文字までです。GETメソッドはQUERY_STRINGヘッダーを使って情報を送信するため、CGIプログラム側ではQUERY_STRING環境変数を通じてその情報にアクセスできます。

情報を渡す方法としては、キーと値のペアを任意のURLに連結するだけで十分な場合もありますし、HTMLの<FORM>タグを使ってGETメソッドで情報を送信することも可能です。

シンプルなURLの例:GETメソッド

以下は、GETメソッドを使って2つの値をhello_get.pyプログラムに渡すシンプルなURLの例です。

次に紹介するのは、Webブラウザからの入力を処理するhello_get.pyスクリプトです。cgiモジュールを利用すると、渡された情報へとても簡単にアクセスできます。

コード例

#!/usr/bin/python
# 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\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
print "<h2>Hello %s %s</h2>" % (first_name, last_name)
print "</body>"
print "</html>"

出力結果

このスクリプトを実行すると、以下のような結果が表示されます。

Hello ZARA ALI

シンプルなフォームの例:GETメソッド

この例では、HTMLフォームと送信ボタンを使って2つの値を渡します。入力の処理には、先ほどと同じCGIスクリプトhello_get.pyを使用します。

<form action = "/cgi-bin/hello_get.py" method = "get">
First Name: <input type = "text" name = "first_name"> <br />
Last Name: <input type = "text" name = "last_name" />
<input type = "submit" value = "Submit" />
</form>

出力結果

上記フォームの実際の出力は以下の画像の通りです。名前(First Name)と姓(Last Name)を入力し、送信ボタンをクリックすると結果が表示されます。

PythonでGETメソッドを使用して情報を渡す方法【CGIプログラミング入門】

補足:Python 2とPython 3の違いについて

上記のサンプルコードはPython 2のprint文を使用しています。Python 3ではprint()関数形式で記述する必要がある点に注意してください。また、cgiモジュールは近年のPythonバージョンでは非推奨となり、最終的には標準ライブラリから削除されました。現在の実務開発では、FlaskやDjangoといったWebフレームワークを使うことが一般的ですが、GETメソッドによるパラメータ受け渡しという基本的な仕組み自体は今も変わりません。

  1. PythonでWebからファイルをダウンロードする方法|requestsライブラリの使い方を徹底解説

    Pythonには、urllibやrequestsなど、Webからファイルをダウンロードするためのさまざまなモジュールが用意されています。本記事では、その中でも定番のrequestsライブラリを使用して、URLから効率的にファイルをダウンロードする方法を、ステップごとにわかりやすく解説します。 requestsライブラリでファイルをダウンロードする基本手順 1. モジュールをインポートする import requests 2. ダウンロード対象のURLを指定する url = https://www.facebook.com/favicon.ico r = requests.get(url, al

  2. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c