画面なんて作るから構築に時間がかかるんだ!(極論)
※なお、良心がタイトルを「まだテンプレートで消耗しているの?」にさせなかった模様。
Pythonの有名ドコロwebフレームワークは、
どれもデフォルトでテンプレート機能が用意されています。
(対してORMはDjangoくらいだったりする)
今回紹介するFalconはそのテンプレート機能すらも捨て去った漢モジュールです。
最近のスマホアプリや、javascriptによるフロントMVCの攻勢を見ると、
テンプレートはなくても良いんじゃないかと思うことがあります。
そうなるとtornadoやDjangoは少々大げさすぎる感じはするので、
サーバサイドをScrapy + mongodb + データ集計+Falconで組んで、
フロントはスマホアプリやJSに完全に任せてしまうという構成もありなきがします。
使い方
pipでいれて
pip install falcon
こんな風に書くだけ
import json import falcon class HelloResource(object): def on_get(self,req,resp): msg={"message":"hello,falcon"} resp.body = json.dumps(msg) app = falcon.API() app.add_route("/",HelloResource()) if __name__ == "__main__": from wsgiref import simple_server httpd = simple_server.make_server("127.0.0.1",8000,app) httpd.serve_forever()
アクセスするとjsonが帰ってきます。
hook機能
デコレータでフックと呼ばれる追加機能をたせます。
def hook_func(req,resp,resource,param) print "this is hook" @falcon.before(hook_func) def on_get(self,req,resp) pass
@falcon.before
を用いると、アクセス時に先に
この関数を走らせることができます。
(同様に@falcon.after
を用いると、終了後に実行されるようです)
とこんな感じで、新しいサーバサイドの構成を考えています。
tinydbやmongodbを組み込めば、dbの中身をそのまま返せますね。
tinydbの使い方は以下をどうぞ。 esu-ko.hatenablog.com