Django模板变量值到字符串文字比较失败

时间:2010-09-17 01:28:23

标签: django django-templates

我的模板中有以下代码,可以将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是否会返回任何多余的字符,看起来不是这样......我还能在这里找到什么?

2 个答案:

答案 0 :(得分:43)

所以在搜索Django docs 2小时之后,我终于找到了一种方法让它发挥作用:

{% if watchinstance.shift|stringformat:"s" == "DAY"  %}

答案 1 :(得分:10)

有几种可能性:

  1. .shift字符串有额外的空格。用它来仔细检查:

    {% for watchinstance in watchinstance_list %}
        X{{ watchinstance.shift }}X
    {% endfor %}
    
  2. .shift属性不是字符串,而是字符串化为“DAY”或“NIGHT”的对象。在这种情况下,{{ watchinstance.shift }}中的变量替换看起来与字符串相同,但{% ifequal watchinstance.shift "DAY" %}中的比较会失败。