Jinja 2テンプレート部分レンダリング

3151 ワード

このような要件は、テンプレートを使用して新しいテンプレートをカスタマイズする際にデフォルトでテンプレートを構築し、テンプレート定義の変数値の一部のみを提供します.
from Jinja2 import Template
template = Template('{{var1}} and {{var2}}')
print(template.render({'var1':'val1'}))

Jinja 2は、指定されていない値を空の文字列で処理し、次のように出力します.
val1 and

テンプレートの作成時にundefinedをStrictUndefindとして指定します.
from Jinja2 import Template,StrictUndefined
template = Template('{{var1}} and {{var2}}',undefined=StrictUndefined)
print(template.render({'var1':'val1'}))

すべての変数が指定されていない場合、例外が放出されます.
jinja2.exceptions.UndefinedError:'var2' is undefined

テンプレートの作成時にundefinedをDebugUndefinedとして指定します.
from Jinja2 import Template,DebugUndefined
template = Template('{{var1}} and {{var2}}',undefined=DebugUndefined)
print(template.render({'var1':'val1'}))

提供されていないvar 2は変数として維持されます.
val1 and {{ var2 }}

また,出力時にjinja 2がフォーマットされ,カッコと変数名の間のスペース数(0~n個)が1個となり,そのまま出力されないことに気づいた.