如果我輸出的模板如下:這個簡單的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