Jinja2模板部分渲染

此类需求可能在利用一个模板定制新模板时遇到
默认情况下构造一个模板,只提供部分模板定义的变量值:

from Jinja2 import Template
template = Template('{{var1}} and {{var2}}')
print(template.render({'var1':'val1'}))

Jinja2会将未提供的值按照空字符串处理,输出如下:

val1 and

构造模板时指定undefined为StrictUndefined:

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'}))

则会将未提供的var2继续保持为变量:

val1 and {{ var2 }}

而且我们注意到,输出时jinja2还为其做了格式化,花括号和变量名之间的空格数量(0~n个)都会变成1个,并没有照原样输出。

你可能感兴趣的:(Python)