jinja2模板的多个渲染?

时间:2012-10-21 00:57:43

标签: python jinja2

有没有办法用jinja2做到这一点?

template = Template("{{ var1 }}{{ var2 }}")
rendered1 = template.render(var1=5) # "5-{{ var2 }}"
rendered2 = Template(rendered1).render(var2=6) # "5-6"
基本上,我希望能够在模板上进行多次传递。当模板引擎在模板中找到不在上下文中的变量时,不要将其替换为空,而是保持模板变量完好无损?如果不是jinja2,还有其他任何python模板库可以做到吗?

1 个答案:

答案 0 :(得分:7)

您可以使用DebugUndefined作为undefined Template环境>>> from jinja2 import Template, DebugUndefined >>> template = Template("{{ var1 }}-{{ var2 }}", undefined=DebugUndefined) >>> rendered1 = template.render(var1=5) # "5-{{ var2 }}" >>> print(rendered1) 5-{{ var2 }} >>> rendered2 = Template(rendered1).render(var2=6) # "5-6" >>> print(rendered2) 5-6 参数的Undefined Type来保留失败的查找内容:

{{1}}