在这里提出了一个问题。
我有以下
{% 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,我不希望它显示任何内容。
答案 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 %}