Flask 0.11 がリリースされた。
Flask 0.11 Released | The Pallets Projects
# ちなみにどうでもいいけど、Flask のコードネームは酒の名前
後方互換がいくつかなくなってるので、まとめてみる。
# 漏れがあったら追記する予定
とりあえず自分のプロジェクト生成ツールで作成した Flask project を起動して試してみただけ。
flask.ext.* が非推奨に
/tmp/virtualenvs/flask_011/lib/python3.5/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.cache is deprecated, use flask_cache instead. .format(x=modname), ExtDeprecationWarning
こんな感じで、Flask の拡張ライブラリ系で flask.ext.* を使っていると、警告が表示される。
自分のプロジェクトは flask.ext.* を flask_* に変更すればいい。
GitHub - pallets/flask-ext-migrate: A script for migrating extension import syntax.
あるいはマイグレーションツールがあるので、それを利用すると解決する。
ただし、ライブラリ内で使われている(例えば、Flask-Cache)場合は、ライブラリの対応を待つ必要がある。
Flask-Cache は Pull Request が出てたので、取り込まれるのを待つ。
# 自分のプロジェクトの場合、未だに flask.ext.* を使ってたのが、Flask-Cache だけだった
個人的には名前空間的に ext というのに属しているのはわかりやすくて良いし、flask_ とプレフィックスがつくのはイマイチ好きじゃない…。
# ext hook を呼んでいてるのでそのオーバヘッドはもちろんあるだろうけど…。
request.json が非推奨に
API サーバーとして Flask を利用していて、クライアントから JSON をパラメーターとして要求している場合に、よく使われると思うけど、request.json じゃなくて request.get_json() にする必要がある。
メソッドを呼ぶ方がわかりやすいので、良いと思う。
Jinja2 のテンプレートのオートリロード
今まで、アプリケーションを起動したまま、Jinja2 のテンプレートを変更したら、次のリクエストからは、変更されたテンプレートが反映されたが、今回からは TEMPLATES_AUTO_RELOAD を Flask の設定に含めないといけない。
TEMPLATES_AUTO_RELOAD の設定がない場合は、デバッグモードの値を Jinja2 に auto_reload に突っ込んでいる。
本番環境では debug=False にしているので、ちょっと HTML のテンプレートを起動したまま変更…というのをやりたい場合は、TEMPLATES_AUTO_RELOAD にする必要がある。
大きい変更
flask コマンドが追加された。
http://flask.pocoo.org/docs/0.11/cli/
今まで、Flask-Script を使って、Flask にコマンドを追加していた。
それを使わなくても Flask だけでできるようになる(つまり Flask-Script を差し替える必要がある)。
時期を見て置き換えよう…。
他諸々追加になったりしてるものがあるので、何かあったら追記する。
# きになるのが、SESSION_REFRESH_EACH_REQUEST くらいか。