jinja2模板中的'if'语句

86

我正在尝试在 jinja模板 中编写一个if条件语句:


{% for key in data %}
    {% if key is 'priority' %}
        <p>('Priority: ' + str(data[key])</p>
    {% endif %}
{% endfor %}

我需要翻译成Python的语句是:

if key == priority:
    print(print('Priority: ' + str(data[key]))

这是我收到的错误信息:

TemplateSyntaxError: 预期标记 'name',实际得到的是 'string'


3
在与类型比较时应使用is,例如 if var is list。在您的情况下,您需要使用key == 'priority' - Nicole White
@NicoleWhite 在Python中,测试if var is list并不检查var是否是列表... 它检查var是否为确切类型的list... 在jinja2中,if var is list寻找名为list的测试... 这似乎根本不存在!! - donkopotamus
1
抱歉,我的意思是 type(var) is list - Nicole White
2个回答

121

为什么要用循环?

你可以简单地这样做:

{% if 'priority' in data %}
    <p>Priority: {{ data['priority'] }}</p>
{% endif %}

在最初进行字符串比较时,您应该使用==


我已经给它点了踩,Priority周围不需要引号,也不需要在{{ }}中使用str。即应该写成<p>Priority: {{ data["priority"] }}</p> - donkopotamus
8
在百分号后面添加减号 {%- if 'a' in data -%} 可以避免出现空行。 - Lukasz

68

我们需要记住,在{% else %}之后才是{% endif %}

所以这是一个例子:

{% if someTest %}
     <p> Something is True </p>
{% else %}
     <p> Something is False </p>
{% endif %}

8
else语句是否必要?它不可以只用if...then...endif吗? - takobaba
OP中没有提到else - Shib

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接