欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Jinja2模板部分渲染

程序员文章站 2022-06-17 15:55:03
...

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

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 Jinja2