Python(webアプリ)
Webアプリとは、インターネットを介して、Webブラウザから利用するアプリケーションのことで、ブログや掲示板、ネット通販やネットバイキングなどで利用されています。
WebアプリはWebブラウザ(クライアント)とWebサーバの間で、HTTPという通信規約のもとで通信することで成立します。
HTTP通信は、WebブラウザからWebサーバにリクエストを送信すると、Webサーバはリクエストに応じたレスポンスを返すというものです。
Webサーバの中にあり、サーバが返すレスポンスをプログラミングによって動的に生成するのがPythonの役割です。
PythonでWebサーバを起動
Pythonには簡易Webサーバが内臓されており、コマンドラインから以下のコマンドを実行するとWebサーバが起動します。
PythonでWebサーバを起動(cmd)
python -m http.server --cgi 8080
終了 Ctrl+C
http://localhost:8080
※カレントディレクトリはユーザー直下のディレクトリを参照
保存先を指定しない場合のファイル保存場所はカレントディレクトリになる
格言を表示するWebアプリ
#!/usr/bin/env python
# ヘッダ情報を出力
print("Content-Type: text/html; charset=utf-8")
# ヘッダと本体データを区切る
print("")
# 本体のデータを出力
print("<html><head><meta charset='utf-8'></head><body>")
print("聞くことに速く語ることに遅くあるべき")
print("</body></html>")
このプログラムを簡易サーバで実行するにはカレントディレクトリに「cgi-bin」というフォルダを作成し、その中にこのプログラムを配置する必要があります。
また、環境変数を設定していない場合、日本語が文字化けして正しく表示されないことがあります。
Windowsでは検索ボックスに「環境変数」と入力してユーザー環境変数の編集を実行し、下図のように設定後、再起動をして再度実行してください。
PythonでWebサーバを起動している状態でhttp://localhost:8080/cgi-bin/kakugen.pyにアクセス
#!/usr/bin/env python3
シェバンと呼ばれるPythonを実行するためのコマンドを指定する
この指定はLinux/OS Xで必要
Linux/OS X でWebアプリディレクトリに実行権限を与える
- コマンドライン
例 $ chmod +x cgi-bin/kakugen.py
Linux/OS X で環境変数の設定
- コマンドライン
$ vim ~/.bashrc - テキストツール
export PYTHONIOENCODING='utf-8'
Webサイコロ
#!/usr/bin/env python3
import random
# ヘッダ出力
print("Context-Type: text/html")
print("")
# ランダムな数を取得
no = random.randint(1,6)
# 画面に出力
print("""
<html>
<head><title>Dice</title></head>
<body>
<h1>{num}</h1>
</body>
</html>
""".format(num=no))
URLパラメータの値を取得
#!/usr/bin/env python3
import cgi
# ヘッダ出力
print("Context-Type: text/html; charset=utf-8")
print("")
print("<pre>")
# URLパラメータを取得するFieldStorageオブジェクトを取得
# 辞書型と同じようにキーでアクセスしたり、keys()でパラメータの一覧を取得できる
form = cgi.FieldStorage()
"""
# formに"mode"が含まれるか?
if "mode" in form:
print("mode=",form["mode"].value)
else:
print("mode=空")
"""
# 特定のパラメータを取得して表示
mode = form.getvalue("mode",default="")
print("mode=",mode)
# すべてのパラメータを取得して表示
# getvalue()メソッド フォームのパラメータ値を取得 引数にキーを指定
print("---all params---")
for k in form.keys():
print(k,"=",form.getvalue(k))
・URLパラメータの値を取得
<書式>
http://(アプリのアドレス)?キー1=値1&キー2=値2&キー3=値3
http://localhost:8080/cgi-bin/show-params.py?mode=test&n=30&q=500での実行結果
cgiモジュールを使うことで、URLパラメータを取得できます。
Webアプリでデバッグする方法
# デバッグ用 PythonのエラーをWebブラウザに出力
import cgitb
cgitb.enable()
このコードをプログラムに書き込んでおくとPythonのエラーをWebブラウザに出力できます。