=====================
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) }}