Jinja 2テンプレート部分レンダリング
3151 ワード
このような要件は、テンプレートを使用して新しいテンプレートをカスタマイズする際にデフォルトでテンプレートを構築し、テンプレート定義の変数値の一部のみを提供します.
Jinja 2は、指定されていない値を空の文字列で処理し、次のように出力します.
テンプレートの作成時にundefinedをStrictUndefindとして指定します.
すべての変数が指定されていない場合、例外が放出されます.
テンプレートの作成時にundefinedをDebugUndefinedとして指定します.
提供されていないvar 2は変数として維持されます.
また,出力時にjinja 2がフォーマットされ,カッコと変数名の間のスペース数(0~n個)が1個となり,そのまま出力されないことに気づいた.
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個となり,そのまま出力されないことに気づいた.