Django模板标签比较不起作用

时间:2015-07-10 15:53:31

标签: python django

我试图比较Django模板标记中的两个值,但它没有像我期望的那样工作。这是我的模板标记的样子:

<ul>
{% for c in category %}
{% ifequal c.name|stringformat:"%s" values.project_category|stringformat:"%s" %}
<li>Values equal ({{c.name}}:{{values.project_category}})</li>
{% else %}
<li>Values differ ({{c.name}}:{{values.project_category}})</li>
{% endifequal %}
{% endfor %}
</ul>

values项是从视图传递给模板的字典,而category是我迭代的QuerySet。 values字典开头为空,但我得到了这个输出:

Values equal (One:)
Values equal (Two:)
Values equal (Three:)

从输出中可以看出,值不相等(values项目不会显示,因为它们不存在)。我在这做错了什么?我认为它一定是打字问题,这就是为什么我选择使用stringformat修饰符,但这似乎没有什么区别。

1 个答案:

答案 0 :(得分:2)

问题在于使用&#34;%s&#34;在stringformat过滤器中。过滤器会删除前导%:

Django stringformat filter

因此,您只是将两个字符串转换为字面值&#34;%s&#34;,并且因为&#34;%s&#34; ==&#34;%s&#34;你的ifequal总是如此。