Python 为什么';这个简单的django IF语句行吗?

Python 为什么';这个简单的django IF语句行吗?,python,django,Python,Django,如果我在模板中输出以下内容: {{ latest_session.chat_room.is_open }} 它输出 True 但当我做这个检查时: {% if latest_session.chat_room.is_open == 'True' %} Online {% else %} Offline {% endif %} 它输出: Offline 它不应该在线输出吗?是开放的可能是一个布尔字段,因此它的python值是布尔值,而不是字符串。使用{%if last_sess

如果我在模板中输出以下内容:

{{ latest_session.chat_room.is_open }}
它输出

True
但当我做这个检查时:

{% if latest_session.chat_room.is_open == 'True' %}
   Online
{% else %}
   Offline
{% endif %}
它输出:

Offline

它不应该在线输出吗?

是开放的
可能是一个
布尔字段
,因此它的python值是布尔值,而不是字符串。使用
{%if last_session.chat_room.is_open%}
检查它。

True
是布尔值,而不是字符串。使用
{%if last_session.chat_room.is_open%}

根据

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

因此,您不能在{%if%}标记内进行比较。由于
是打开的
可能返回一个布尔值,因此请使用以下内容

{% if latest_session.chat_room.is_open %}

是的,你是对的,这就解决了。奇怪的是,自动生成的文档没有提到它是布尔值,但对其他字段却提到了。但请注意,您知道它是布尔值而不是文本字段,如果它是带有“false”的文本字段,那么{%if latest_session.chat_room.is_open%}从Django 1.2开始计算为true非true: