2011-08-04 216 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

非常酷。我不知道。 –

相關問題