Python製WebアプリフレームワークFlaskが思っていたよりパワフルで深い。

せっかくPython始めたのでWebアプリの一つでも作ってみたいと思い、この本を読みながらFlaskの使い方を勉強していたんですが、正直扱いづらいなぁ・・・と感じていました。

ちょっと規模が大きくなると、Viewを機能ごとに複数のソースファイルに分けたり、機能ごとにテストを組みたくなってきて。

デコレータで手軽にroute設定できるのは利点なんですが、このappインスタンスを複数ファイルから参照するのは何か嫌だし。

何かもっと綺麗な書き方があるはずだと思ってFlaskの公式ドキュメントをみていたら、やっぱりありました。

Flask 0.7以降でサポートされたPluggable Viewというものがあります。

ビュー関数の代わりにDjangoのクラスベースの汎用ビューにインスパイアされた拡張可能なビューが導入されています。
主な目的として、カスタマイズ可能な拡張可能なビューを使って、実装の一部分を置き換えることができます。

公式ページのサンプルそのままですが、下のようにViewを継承したクラスを作っておいて、appインスタンスにadd_url_ruleすればいいんですね。これはいい!

Viewクラスがサポートするmethodを指定することも可能ですが、この書き方はいまいちな気が・・・

という方向けに、MethodViewクラスがあります。

これは対応するmethod名(小文字)をオーバーライドしてやれば、そのmethodに対応した関数がマップされるというものです。

これならViewクラスごとにテストが書けるので、メンテナンス性も良いですね。

現在制作中のちょっとしたWebアプリは、上記View/MethodViewに置き換えました。

後から機能を付け足しやすくなって、いい感じです。

まだ使ったことがない方は、ぜひ試してみてください。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする