python - Jinja2 模板渲染 {{variable}} 代替空字符串(如果未设置变量)

标签 python jinja2

我的模板包含 2 个 {{var1}} 和 {{var2}} 占位符。 如果我只为 var1: value1 设置变量,那么 {{var2}} 也会被空字符串替换。但我想要 {{var2}} 而不是空字符串

代码片段:

var = {var1:value1}
tmp = Template(f.read(),start="{{",end="}}")
data = tmp.render(var)

最佳答案

您可以在设置 var1 和 var2 时通过回退分配来完成此操作:

var1 = value1 if value1 else "{{var1}}"
var2 = value2 if value2 else "{{var2}}"

var = {"var1":var1, "var2":var2}
tmp = Template(f.read(),start="{{",end="}}")
data = tmp.render(var)

或者您可以在 Django 模板中执行此操作,例如:

{% if var1 %}   
    {{ var1 }}
{% else %}
    {% templatetag openvariable %} var1 {% templatetag closevariable %}
{%endif%}

或者,如果您使用 Jinja2 进行模板化,则可以在 Jinja2 模板中执行此操作,如下所示:

{% if var1 %}   
    {{ var1 }}
{% else %}
    {% raw %}
    {{ var1 }}
    {% endraw %}
{%endif%}

关于python - Jinja2 模板渲染 {{variable}} 代替空字符串(如果未设置变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54204375/

相关文章:

python - 如何使用python将json从API插入到snowflake数据库?

python - 使用 Jinja2 (Flask) 模板引擎参数化可重用 block

python - 从 Flask 生成(内联 CSS)HTML 模板不起作用

python - notMNIST 无法在 TensorFlow Udacity 类(class)中下载

python - Pandas 因可变列而失败

python - EC2上的Python脚本返回错误的签名类型错误

python - C++ 中的循环 (while)

python - 将变量传递给 Jinja2 中的宏

javascript - JQuery重新加载DIV? ( flask /Jinja2)

python - 如何在 Jinja 中实现类似 Django 的标签