P.49 Webアプリケーションに値を渡す

cgi モジュール を使用して、URLからクエリを受け取り、プログラムで利用します。
受け取られたクエリに記述されたキーと値には、cgi モジュールの FieldStorage というクラスのインスタンスから辞書風にアクセスします。

import cgi
form = cgi.FieldStorage()
value = form['key'].value

FieldStorage のインスタンスPython の辞書のようにインデクス を使って参照でき、標準の辞書に対するメソッド has_key() と keys() をサポートしています。組み込みの関数 len() もサポートしています。空の文字列を含むフォームのフィールドは 無視され、辞書には入りません; そういった値を保持するには、 FieldStorage のインスタンスを生成する時にオプションの keep_blank_values キーワード引数を true に設定してください。

http://www.python.jp/doc/release/lib/node457.html

上記の場合、クエリに key というキーが記述されていないと、KeyError という例外を返します。

exception KeyError
マップ型 (辞書型) オブジェクトのキーが、オブジェクトのキー集合内に 見つからなかった場合に送出されます。
http://www.python.jp/doc/2.4/lib/module-exceptions.html

FieldStorage の持つ、辞書型の get() と同様のメソッド、getvalue() を使用すると、指定したキーが記述されていない場合に受け取る値を設定することが出来ます。

import cgi
form = cgi.FieldStorage()
#value = form['key'].value
value = form.getvalue('key', 'N/A') #クエリ中に key キーがある場合はその値を、ない場合は "N/A" を受け取る。

ここで、"form[key]" で参照される各フィールドは それ自体が FieldStorage (または MiniFieldStorage 。 フォームのエンコードによって変わります) のインスタンスです。 インスタンスの属性 value の内容は対応するフィールドの値で、 文字列になります。 getvalue() メソッドはこの文字列値を直接返します。 getvalue() の 2 つめの引数にオプションの値を与えると、 リクエストされたキーが存在しない場合に返すデフォルトの値になります。

http://www.python.jp/doc/release/lib/node457.html