2015-07-10 57 views
0

我试图比较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修饰符,但这似乎没有什么区别。

回答

2

问题是在stringformat过滤器中使用“%s”。领导%由过滤器删除:

Django stringformat filter

因此,你只是将两个字符串字面的“%s”和从“%s的” ==“%s的”你ifequal始终是真实的。

+0

我是个白痴。谢谢你让我变直! –