Pythonで作るWebアプリのルーティング
今のところWebApp2とDjangoの2つを触っていますが、どちらも共通した感じのルーティング設定なので、ひょっとするとWSGIのインターフェースをほぼ直にたたいているようです。
Rubyの場合Rackが表だって出てくる感じはあまりしないので、なるほどこの対比は面白いなと思いました。
以下WebApp2のルーティングについてです。
ルーティングパスの設定
Route('/path/to/content', handler='module.name.of.ContentHandler', name='handler_name')
こういうのを必要な分だけ用意して、それをリストにして WSGIApplication のコンストラクターに渡してやればいいようです。
ハンドラーの設定
上の例だと、パスのルートから
module\name\of.pyというファイルにContentHandlerというクラスを定義してやるようです。
class ContentHandler(Webapp2.RequestHandler): def get(self): # この部分はGETでリクエストすると呼ばれる pass def post(self): # こちらはPOSTでリクエストすると呼ばれる pass
ざっくりとした説明はこんな感じです。ちなみに上のコード片は何もしません。試してないけどPUTとDELETEもきくのかな
レスポンスを出力する
普通にHTMLを吐き出す
def get(self): self.render('path_to_content.html', {'variable' : 'value'})
上のような感じです。ファイル名に続けてハッシュを渡すとビューで変数が使えます。