■概要
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"] = nl2br1,2行目:必要なメソッドをインポート
3,4行目テンプレートフィルターであることの宣言、evalの特殊処理であることの宣言
5行目;おまじない・・・
10行目、11行目:環境変数のフィルターに登録
■html
変数の後に「|」(パイプ)でつないで呼び出したいフィルター名を記載{{each['planecontent'] | nl2br}}
0 件のコメント :
コメントを投稿