Шаблоны Django (App Engine) - разница между None и False - PullRequest
1 голос
/ 09 февраля 2012

У меня есть шаблон Django в Google App Engine:

{% if not d.deposited}
    {{ variable }}
{% else %}
    {{ other_variable }}                 
{% endif %}

Внесенная переменная может быть True, False или None.Я пытаюсь определить, является ли значение одним из этих трех, но, насколько я могу судить, False и None рассматриваются как одно и то же (это означает, что первая часть if запускается оба раза).Есть ли способ обойти это?

1 Ответ

2 голосов
/ 10 февраля 2012

В Python None фактически является объектом , обозначающим отсутствие значения. Чтобы проверить это специально в Django 1.2 или более поздней версии, проверьте, является ли deposited самим None.

{% if d.deposited is None %}
    {{ none_variable }}
{% elif not d.deposited %}
    {{ false_variable }}
{% else %}
    {{ other_variable }}                 
{% endif %}

К сожалению, до 1.2 тег if был не очень мощным, но вместо этого вы можете использовать ifequal и ifnotequal.

{% ifequal d.deposited None %}

Также, если интересно, см. Эту статью на разницу между is None и == None.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...