我的模板中有以下代码,可以将watchinstance.shift
的值(可以是“DAY”或“NIGHT”)与文字字符串“DAY”进行比较。比较总是失败。
{% for watchinstance in watchinstance_list %}
{% if watchinstance.shift == "DAY" %}
<p>shift is DAY</p>
{% endif %}
{% endfor %}
使用ifequal
也不起作用:
{% for watchinstance in watchinstance_list %}
{% ifequal watchinstance.shift "DAY" %}
<p>shift is DAY</p>
{% endifequal %}
{% endfor %}
但是,只需调用{{ watchinstance.shift }}
按预期工作:
{% for watchinstance in watchinstance_list %}
{{ watchinstance.shift }}
{% endfor %}
返回DAY和NIGHT。
我检查了watchinstance.shift
是否会返回任何多余的字符,看起来不是这样......我还能在这里找到什么?
答案 0 :(得分:43)
所以在搜索Django docs 2小时之后,我终于找到了一种方法让它发挥作用:
{% if watchinstance.shift|stringformat:"s" == "DAY" %}
答案 1 :(得分:10)
有几种可能性:
.shift字符串有额外的空格。用它来仔细检查:
{% for watchinstance in watchinstance_list %}
X{{ watchinstance.shift }}X
{% endfor %}
.shift属性不是字符串,而是字符串化为“DAY”或“NIGHT”的对象。在这种情况下,{{ watchinstance.shift }}
中的变量替换看起来与字符串相同,但{% ifequal watchinstance.shift "DAY" %}
中的比较会失败。