【问题标题】:Multiple renders of jinja2 templates?jinja2模板的多个渲染?
【发布时间】:2012-10-21 00:57:42
【问题描述】:

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

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

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

【问题讨论】:

    标签: python jinja2


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 2017-03-01
    • 2020-02-26
    • 2017-10-04
    • 2014-12-23
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    相关资源
    最近更新 更多