« Nexus7のアダプターを郵便で送ってみた | トップページ | C++ Builder/Delphiでフォーカスが別のコントロールにある時に強引にTEditに入力を戻す »

2014-09-13

Python CGIでウェブアプリを作ってみる その1

最近、Pythonを勉強し始めた訳だが、偶然知り合った方が作ったウェブアプリがPython2.7で書かれたということで、PythonでのCGIが気になったのでやってみました。

自宅で、テスト用というか遊び用に使っている古いLinux機でやったので、Pythonのバージョンは2.4.4です。現在の標準的な文字コードはUTF-8だと思いますが、私の環境ではEUC-JP環境なので、環境に応じた文字コードに置き換えて読んで下さい。

今回はとにかく、インプットとアウトプットの方法を確認しておきたいと思います。

sample1.cgi
#!/usr/bin/python
# -*- coding: euc-jp -*-

import site
import cgi
import os

print "content-type: text/html\n\n"

print '<html>'
print '<head><meta charset="euc-jp"></head>'
print '<body>'
print '<h1>CGIサンプル</h1>'
print '<form action="sample1.cgi" method="get">'
print 'メッセージ <input type="text" name="msg">'
print '<input type="submit">'
print '</form>'

# formで送信される方法を取得して出力してみる
if os.environ['REQUEST_METHOD'] == 'POST':
    print 'POST'
elif os.environ['REQUEST_METHOD'] == 'GET':
    print 'GET'

print '<br />'

# 入力された値を出力する
form = cgi.FieldStorage()
if form.has_key('msg'):
    print '<h2>' + form['msg'].value + '</h2>'

print '<body>'
print '</html>'

実行結果
Python_cgi_sample

取り敢えず、ちょこちょこっとネットで検索して、こんな感じで書いて動かしてみましたが、いちおう意図通りにデータを取得して表示できているようです。

入出力に関する処理さえできてしまえば、後は通常のローカルで動作するアプリケーションと同じなので、入力値を処理して出力するという事になると思います。
データベースとの連携、ファイルの入出力。これらは複数のプロセスからアクセスされる事があるので、排他処理が重要になってくると思います。
他にはセッションの管理とかクッキーなどの処理ができると、より使い勝手の良いアプリケーションができると思いますので、今後その辺りも探ってみたいと思います。
現段階で予備知識は全くありませんので、手探りで調べながら楽しみたいと思います。



|

« Nexus7のアダプターを郵便で送ってみた | トップページ | C++ Builder/Delphiでフォーカスが別のコントロールにある時に強引にTEditに入力を戻す »

python」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Python CGIでウェブアプリを作ってみる その1:

« Nexus7のアダプターを郵便で送ってみた | トップページ | C++ Builder/Delphiでフォーカスが別のコントロールにある時に強引にTEditに入力を戻す »