python - jinja2 模板的多个渲染?

标签 python jinja2

有什么办法可以用 jinja2 做到这一点吗?

template = Template("{{ var1 }}{{ var2 }}")
rendered1 = template.render(var1=5) # "5-{{ var2 }}"
rendered2 = Template(rendered1).render(var2=6) # "5-6"

基本上,我希望能够在一个模板上进行多次传递。当模板引擎在模板中发现上下文中没有的变量时,不是用空替换它,而是保持模板变量原封不动?如果不是 jinja2,是否有其他 python 模板库可以做到这一点?

最佳答案

您可以使用 DebugUndefined ,它保留失败的查找,作为您的 Undefined Type对于 Template 环境的 undefined 参数:

>>> 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

关于python - jinja2 模板的多个渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12994028/

相关文章:

python - 计算两条曲线之间的面积(正态分布)

python - Pandas 将数据写入单独的 csv 文件

python - Jinja 2 - Django 表单 : rendering encodes HTML

python - Flask Jinja2 - 解析 JSON

python - 在 Python 中打开文件和 with 语句

python - 用 Python 打包数据

python - 如何获取 Jinja2 模板中的参数列表

javascript - 如何使用 Python/Flask/Jinja 将外部(跨域)JSON 加载到 D3.js 中?

jquery - AJAX 和 Jinja2

python - 如何使用 Selenium2Library 在 Robot Framework 上向 chromedriver 添加扩展并远程启动