如果我输出的模板如下:这个简单的django IF语句为什么不起作用?
{{ latest_session.chat_room.is_open }}
它输出
True
但是当我做这个检查:
{% if latest_session.chat_room.is_open == 'True' %}
Online
{% else %}
Offline
{% endif %}
它输出:
Offline
Shoul不要输出在线?
如果我输出的模板如下:这个简单的django IF语句为什么不起作用?
{{ latest_session.chat_room.is_open }}
它输出
True
但是当我做这个检查:
{% if latest_session.chat_room.is_open == 'True' %}
Online
{% else %}
Offline
{% endif %}
它输出:
Offline
Shoul不要输出在线?
is_open
可能是BooleanField
,所以它的python值是一个布尔值,而不是一个字符串。使用{% if latest_session.chat_room.is_open %}
进行检查。
True
是一个布尔值,而不是一个字符串。改为使用{% if latest_session.chat_room.is_open %}
。
按照Django Book,
的{%如果%}标签计算一个变量,并且如果该变量是“真” (即,它的存在,不为空,并且不是虚假布尔值), 系统将显示{%if%}和{%endif%}之间的所有内容。
因此,您不能在{%if%}标签内进行比较。由于is_open
可能会返回一个布尔值,不过,请改为使用以下值。
{% if latest_session.chat_room.is_open %}
从Django 1.2开始并不为真:[基本比较操作符被添加](https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#operator) –
非常酷。我不知道。 –
是的,你是对的,解决了它。奇怪的是,自动生成的文档没有提到它是布尔型的,但是对于其他字段也是如此。 – Sammy
但要小心,如果它是一个带有“false”的文本字段,那么它就是一个布尔值而不是文本字段,那么{%if latest_session.chat_room.is_open%}的计算结果为true – Ted