Jinja2-保留未定义的变量

Ali*_*cea 3 undefined jinja2

我有兴趣在多个步骤中呈现模板,或者将未定义变量的标记保留在Jinja2中。我相信这不仅意味着创建'UndefinedSilent'类(这样模板程序就不会因丢失数据而崩溃),而且还可以在标记丢失时使用适当的变量名来保留标记。

示例:假设上下文中包含名称=“ Test”,但是数量丢失。

Givet以下模板:

<p>{{name}} has {{quantity}}</p>
Run Code Online (Sandbox Code Playgroud)

渲染后,我需要模板变为:

<p>test has {{quantity}}</p>
Run Code Online (Sandbox Code Playgroud)

有人知道这是否可以实现吗?

谢谢。

giw*_*yni 5

在环境中为未定义的命名参数提供DebugUndefined显然可以解决问题。呈现的模板保留{{

    from jinja2 import Environment, BaseLoader,DebugUndefined
    rtemplate =Environment(loader=BaseLoader,undefined=DebugUndefined).from_string("{{ a }} is defined, but {{ b}} is undefined")
    print(rtemplate.render({"a":"a"}))
    #The result is:
   a is defined, but {{ b }} is undefined
Run Code Online (Sandbox Code Playgroud)