2014年5月8日木曜日

filterの登録

■概要

template側でフィルター(filter)を利用したい。
たとえば、変数内の改行を「<br />」に変更する。
jinja2の機能を利用

■python/flask

from jinja2 import Markup, Environment, FileSystemLoader, evalcontextfilter
from jinja2.utils import soft_unicode
@app.template_filter("nl2br")
@evalcontextfilter
def nl2br(eval_ctx, value):
    res = soft_unicode(Markup.escape(value)).replace("\n", Markup("\n"))
    if eval_ctx.autoescape:
        res = Markup(res)
    return res
env = Environment(loader=FileSystemLoader("."), autoescape=False)
env.filters["nl2br"] = nl2br
1,2行目:必要なメソッドをインポート
3,4行目テンプレートフィルターであることの宣言、evalの特殊処理であることの宣言
5行目;おまじない・・・
10行目、11行目:環境変数のフィルターに登録

■html

{{each['planecontent'] | nl2br}}
変数の後に「|」(パイプ)でつないで呼び出したいフィルター名を記載

0 件のコメント :

コメントを投稿