Jinja2中字典的if语句与相等比较

24 投票
1 回答
87594 浏览
提问于 2025-04-17 21:12

我刚接触Jinja2,并且在Flask中使用它。下面有两个语句。使用“in”的那个可以正常工作,而使用“equals”的那个却不行。equals版本出现了一个语法错误,错误信息如下。我很好奇为什么,因为对我来说,equals版本的写法看起来更容易理解。

{% if "SN" in P01["type"] %}
  {% include 'sn.html' %}
{% endif %}

{% if P01["type"] equals "SN" %}
  {% include 'sn.html' %}
{% endif %}

来自jinja2.exceptions.TemplateSyntaxError的错误信息

TemplateSyntaxError: 预期的标记是'语句块结束',但得到了'equals'

谢谢。

1 个回答

48

在Jinja2中,你应该用==来代替equals,比如:

{% if P01["type"] == "SN" %}
  {% include 'sn.html' %}
{% endif %}

http://jinja.pocoo.org/docs/switching/#conditions

我很确定这就是你想要的,但你需要注意,这和"SN" in P01["type"]的意思是不同的。使用in是用来检查一个字符串是否是另一个字符串的一部分,比如"foo" in "foobar"的结果会是True。

撰写回答