13

鉴于我有两个变量{{ profile }},其值为“test”,另一个变量{{ element.author }}值为“test”。在 jinja2 中,当我尝试使用 if 比较它们时,什么也没有出现。我进行如下比较:

{% if profile == element.author %}
{{ profile }} and {{ element.author }} are same
{% else %}
{{ profile }} and {{ element.author }} are **not** same
{% endif %}

我得到输出出了test and test are not same什么问题,我该如何比较?

4

4 回答 4

20

我有同样的问题,两个具有整数值的变量在它们是相同的值时不相等。

有没有办法以任何方式使这项工作。还尝试使用 str() == str() 或 int() == int() 但总是存在未定义的错误。

更新

找到解决方案:{{ var|string() }}只需使用过滤器, 例如{{ var|int() }} https://stackoverflow.com/a/19993378/1232796

阅读文档可以在这里找到http://jinja.pocoo.org/docs/dev/templates/#list-of-builtin-filters

在你的情况下,你想做

{% if profile|string() == element.author|string() %}
{{ profile }} and {{ element.author }} are same
{% else %}
{{ profile }} and {{ element.author }} are **not** same
{% endif %}
于 2015-04-10T10:15:27.467 回答
2

profile并且element.author不是同一类型,否则不相等。但是,它们在转换为字符串时确实会输出相同的值。您需要正确比较它们或将它们的类型更改为相同。

于 2012-09-27T20:14:34.593 回答
1

您可以使用jinja2 提供的众多内置测试之一来检查变量的类型。例如string()number()。我有同样的问题,我意识到那是类型。

于 2013-11-01T08:32:55.170 回答
0

我建议使用|lower过滤器:

{% if profile|lower == element.author|lower %}

这不仅将变量转换为相同的字符串类型,而且还有助于避免来自不同名称可能键入方式的不匹配。

于 2021-04-06T20:01:42.767 回答