===================== 7. Flaskを使いこなす2 ===================== * :ref:`favicon` * :ref:`jinja2_macro` * :ref:`jinja2_filter` * :ref:`logging` * :ref:`blueprint` * :ref:`debug` * :ref:`test` * :ref:`wtforms` .. _favicon: favicon ======= **samples/07/01_faviconを参考にして下さい** ログを見ていると404エラーがでている行があります。:: 127.0.0.1 - - [04/Nov/2013 20:36:33] "GET /favicon.ico HTTP/1.1" 404 - faviconです。ブラウザがfavicon.icoを取得しにきているのですが、 そんなルートは追加していないのでエラーになります。 faviconを配信させるには、html側で指定するか、 Flask側で/favicon.icoのURLルールを追加するとよいです。:: import os from flask import send_from_directory @app.route('/favicon.ico') def favicon(): return send_from_directory(os.path.join(app.root_path, 'static'), 'favicon.ico', mimetype='image/vnd.microsoft.icon') :: :参考: `Adding a favicon — Flask 0.10.1 documentation `_ .. _jinja2_macro: jinja2 macro ============= **samples/07/02_macroを参考にして下さい。** テンプレートを書いていると、同じような処理がでてくることがあります。 そんなとき、htmlテンプレートを関数のようにまとめることができるのが、 jinja2のmacro機能です。 今回作成したFlaskrのユーザー管理画面のdetailをマクロ化してみると、 flaskr/templates/user/_helpers.html .. literalinclude:: ../samples/07/02_macro/flaskr/templates/user/_helpers.html 次のように使います。 flaskr/templates/user/detail.html:: {% from 'user/_helpers.html' import detail with context %} ... {% block body %} {{ detail(user) }}