Monthly Archives: 3月 2013

You are browsing the site archives by month.

PythonでCGIを学ぶ

python_logo

CGIはPerlとかPHPが多いイメージだけど、そこをあえてPythonで覚えてみたい!ヾ(・ω・)ノ
そこで下記サイトを参考にさせてもらいながら、基本的なことをまとめてみる。
Python CGIプログラミング入門
Python 2.7ja1 documentation20.2. cgi — CGI (ゲートウェイインタフェース規格) のサポート

500エラーとか出る人は前回の記事 サーバーでPythonを使うときに注意すること をチェック
してみてください(・ω・)b

HTMLとして表示するときは print で最初にヘッダーを書きだして1行開けるのがお約束。

print "Content-Type: text/html"     # 以降のデータが HTML であることを示す行
print                               # ヘッダ部の終了を示す空行

Pythonの中にHTMLコードを書くときは printステートメントをつける。

## こう書いても良いけど…
print "<TITLE>CGI script output</TITLE>"
print "<H1>This is my first CGI script</H1>"
print "Hello, world!"

## 僕はこう書く方が楽で好き
print """
<TITLE>CGI script output</TITLE>
<H1>This is my first CGI script</H1>
Hello, world!
"""

cgiモジュールをインポートする前に、デバッグ用のおまじないを書いておこう。
エラーが発生した際にブラウザ上に詳細なレポートを出力してくれるぞー。

import cgitb
cgitb.enable()

入力されたフォームデータを取得するには、 FieldStorage クラスを使うのがBEST!(゚∇^d) グッ!!
値を取得するには FieldStorage クラスの getfirst メソッドを使う。

import cgi
fs = cgi.FieldStrage()
txt = fs.getfirst('text', '')

print """
    <article>
        <h2>テキストフィールドに入力された文字を表示</h2>
        <p>入力された文字は、<strong>%s</strong> です。</p>
        <form action="cgi_fieldstorage_txtfld.cgi" method="post">
          <input type="text" name="text" />
          <input type="submit" />
        </form>
    </article>
""" % cgi.escape(txt) ## 特殊文字がある場合はHTML上で表示できるようにする

上記のコードのDEMO