django模板如果条件

goh*_*goh 6 django django-templates

这里有个问题.

我有以下内容

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

        <!-- path 2 -->
    {% endif %} 
{% endif %}
Run Code Online (Sandbox Code Playgroud)

form.tpl.yes_no_required的值为None,但我被路由到路径2.任何人都可以解释为什么会这样?编辑:如果值为none,我不希望它显示任何内容.

小智 14

你不能使用模板语言来测试你认为常量,解析器实际上测试2"文字".

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

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

打印你不是你想的'

c = Context({'None':None})
t.render(c)
Run Code Online (Sandbox Code Playgroud)

打印你不是你想的'

c = Context({'None':None, 'False':False})
t.render(c)
Run Code Online (Sandbox Code Playgroud)

打印你''