django模板如果条件

时间:2011-04-14 18:31:35

标签: django django-templates

在这里提出了一个问题。

我有以下

{% 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的值为None,但我被路由到路径2.任何人都可以解释为什么会这样?编辑:如果值为none,我不希望它显示任何内容。

2 个答案:

答案 0 :(得分:14)

您无法使用模板语言来测试您认为常量的内容,解析器实际上正在测试2个“文字”。

解析器测试名称为“None”和“False”的2个文字。 当解析器尝试在上下文中解析它们时,抛出VariableDoesNotExist异常并且两个对象都解析为python值None 和无==无。

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 :(得分:1)

无!=假无!=也是...... 为无项目做一些像这样的事情

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

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