2011-08-04 174 views
0

如果我输出的模板如下:这个简单的django IF语句为什么不起作用?

{{ latest_session.chat_room.is_open }} 

它输出

True 

但是当我做这个检查:

{% if latest_session.chat_room.is_open == 'True' %} 
    Online 
{% else %} 
    Offline 
{% endif %} 

它输出:

Offline 

Shoul不要输出在线?

回答

9

is_open可能是BooleanField,所以它的python值是一个布尔值,而不是一个字符串。使用{% if latest_session.chat_room.is_open %}进行检查。

+0

是的,你是对的,解决了它。奇怪的是,自动生成的文档没有提到它是布尔型的,但是对于其他字段也是如此。 – Sammy

+0

但要小心,如果它是一个带有“false”的文本字段,那么它就是一个布尔值而不是文本字段,那么{%if latest_session.chat_room.is_open%}的计算结果为true – Ted

3

True是一个布尔值,而不是一个字符串。改为使用{% if latest_session.chat_room.is_open %}

0

按照Django Book

的{%如果%}标签计算一个变量,并且如果该变量是“真” (即,它的存在,不为空,并且不是虚假布尔值), 系统将显示{%if%}和{%endif%}之间的所有内容。

因此,您不能在{%if%}标签内进行比较。由于is_open可能会返回一个布尔值,不过,请改为使用以下值。

{% if latest_session.chat_room.is_open %} 
+1

从Django 1.2开始并不为真:[基本比较操作符被添加](https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#operator) –

+0

非常酷。我不知道。 –

相关问题