2009年3月9日月曜日

WebOb

[TODO]:WebObで検索すると妙に検索順位が高いらしい。せっかくなのでもう少し詳しく書き直す

WSGIアプリを書くときに色々楽できるようになるライブラリ。他のフレームワークにすでに組み込まれていることもあるが、WebObだけ単独で使ってもよい。python付属のcgiライブラリやcookieライブラリを使いやすくしてくれるラッパーに過ぎないが、つまらないミスを防いでシンプルに書けるようになるのがいい。これは標準配布になってもいいと思うなあ。

Requestオブジェクトを使うと、パラメータやcookieの入力がまとめてここから扱える。
準備は、WSGIアプリが受け取る辞書オブジェクト(仮引数はenvironが多い)を突っ込んでRequestを生成するのみ。

req = webob.Requset(environ)

あとは、req.paramsにGETやPOST経由で届いたパラメータが辞書になって入っていたり、req.cookiesにCOOKIEの値が同じく辞書になって入っていたりするので、単に参照すればよい。

Responseオブジェクトは、WSGIアプリとして生成される。使い方は、

def some_app(environ, start_response):
...
res = webob.Response()
res.body = '<html><body>hello</body></html>'
return res(environ, start_response)

といった感じ。MIMEメッセージ設定(初期値はtext/html)やCOOKIEの設定も、resインスタンスのメソッドとしてひととおり準備されている。

HTTPでのリダイレクトは、

res = webob.exc.HTTPSeeOther(location="dokosoko.html")
return res(environ, start_response)

みたいに行う。

0 コメント: