Джанго шаблон, если условие - PullRequest
6 голосов
/ 14 апреля 2011

получил вопрос здесь.

У меня есть следующее

{% if form.tpl.yes_no_required == True  %}
             <!-- path 1 -->
{% else %}
    {% if form.tpl.yes_no_required == False %}

        <!-- path 2 -->
    {% endif %} 
{% endif %}

Значение для form.tpl.yes_no_required - Нет, но я был перенаправлен на путь 2. Может кто-нибудь объяснить, пожалуйстапочему это так?РЕДАКТИРОВАТЬ: если значение равно none, я не хочу, чтобы оно отображало что-либо.

Ответы [ 2 ]

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

Вы не можете использовать язык шаблонов для проверки того, что, по вашему мнению, является константой, парсер фактически проверяет 2 "литерала".

Анализатор проверяет 2 литерала с именами «Нет» и «Ложь». Когда анализатор пытается разрешить их в контексте, генерируется исключение VariableDoesNotExist, и оба объекта преобразуются в значение python. и Нет == Нет.

from django.template import Context, Template
t = Template("{% if None == False %} not what you think {% endif %}")
c = Context({"foo": foo() })

печатает "не то, что ты думаешь"

c = Context({'None':None})
t.render(c)

печатает "не то, что ты думаешь"

c = Context({'None':None, 'False':False})
t.render(c)

печатает у ''

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

None! = False None! = True также ... сделать что-то подобное ни для одного элемента

{% if form.tpl.yes_no_required  %}
             <!-- path 1 -->
{% else %}
    {% if not form.tpl.yes_no_required %}

        <!-- path 2 -->
    {% endif %} 
{% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...