動機
GET変数とかを処理させたいなあと思っただけで使ってみたけど、予想以上に便利だった。
使い方
Apacheの設定
httpd.confには下記の様な設定をしておく
<Directory "/path/to/dir"> AddHandler mod_python .py PythonHandler mod_python.publisher PythonDebug On </Directory>
PythonHandlerにmod_python.publisherを設定すればよい。
Pythonスクリプトの設定
たとえばドキュメントルートが/path/toだとしたときに、http://host.domain/dir/test.pyで処理をさせたいと思ったら
- test.py
def greeting(req, say="Hello!"): req.write(say) def weather(req, forecast="sunny"): req.write(forecast)
とすれば、各URLへのアクセス結果は下記の通りになる。
# http://host.domain/dir/test.py/greeting Hello! # http://host.domain/dir/test.py/greeting?say=Goodbye Goodbye # http://host.domain/dir/test.py/weather sunny # http://host.domain/dir/test.py/weather?forecast=cloudy cloudy
見てもらえば分かるように、test.pyの後のURLがそのまま関数名になっていて、さらに各GET変数が各関数の第2引数以降となっています。
ここで、たとえばテンプレートを使う場合なんかは各関数で読み込むテンプレートを切り替えれば1スクリプトで複数のページの処理ができるわけです。便利すぎる!