我的模板中有以下代码,该代码应将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 %}


返回DAYS和NIGHTS。

我检查了watchinstance.shift是否返回了任何多余的字符,但看起来却不一样……在这里我还能缺少什么?

最佳答案

几种可能性:


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

{% for watchinstance in watchinstance_list %}
    X{{ watchinstance.shift }}X
{% endfor %}

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

10-06 14:12