我试图比较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
修饰符,但这似乎没有什么区别。
答案 0 :(得分:2)
问题在于使用&#34;%s&#34;在stringformat过滤器中。过滤器会删除前导%:
因此,您只是将两个字符串转换为字面值&#34;%s&#34;,并且因为&#34;%s&#34; ==&#34;%s&#34;你的ifequal总是如此。