шаблон django странное поведение - PullRequest
3 голосов
/ 15 апреля 2011
{% if None == False %}
    abc
{% endif %}

Приведенный выше код, как ни странно, мой шаблон отображал abc.Любое объяснение?

Ответы [ 5 ]

3 голосов
/ 15 апреля 2011

Джейсон Калверхаус предоставил ответ в другом похожем вопросе , который я задал.

False и None рассматриваются как переменные, а не как константы.Если переменные или не найдены в контекстном словаре, они разрешаются в None.

3 голосов
/ 15 апреля 2011

Bizarre.В обычном Python,

if None == False:
    # this will not run
    print "abc"

Ошибка в Django.:)

1 голос
/ 15 апреля 2011

Так Python разрешает «истину» для сравнения разных типов.

См. Документы.«None» считается ложным.

http://docs.python.org/library/stdtypes.html#truth-value-testing

Редактировать: как показано ниже, консоль Python не подтверждает это поведение, поэтому я также удивлен.-1 мне!

0 голосов
/ 15 апреля 2011

В качестве альтернативы вы можете сделать if not None.

0 голосов
/ 15 апреля 2011

Пока что кажется, что вам придется создать свой собственный шаблонный фильтр, как было предложено в этом посте

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