2011-08-04 4 views
0

I 출력이 템플릿에서 다음과 같은 경우왜이 간단한 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이므로 파이썬 값은 문자열이 아니라 부울 값입니다. 확인하려면 {% 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 %}을 사용하십시오. Django Book에 따르면

0

,

은 {% % 경우} 태그는 변수를 평가하고, 그 변수는 "참"인 경우 (즉, 존재하는, 비어 있지 않은, 그리고 거짓없는 부울 값)이면 시스템은 {% 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

매우 멋지다. 난 몰랐어. –

관련 문제