■概要
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 件のコメント :
コメントを投稿