django模板 - 如果True返回false?

时间:2012-06-19 18:24:02

标签: django django-templates

我有这段代码:

{% if True %}
    yo!
{% else %}
    what?
{% endif %}

,输出当然是what?(当然,因为我不会问这个问题,不是吗?)

模板世界中不存在True吗?

3 个答案:

答案 0 :(得分:3)

这很有趣,可能被认为是一个错误,但我想它与模板标签的处理方式有关。 if的第一个参数可能被视为上下文变量,因此它在上下文字典中查找True,当然,因为没有True密钥而得不到任何内容。

答案 1 :(得分:2)

发生这种情况是因为您的上下文中没有True对象,因此它解析为虚假。 Django模板不是简单的Python包装器。您不会包含通常的globals()个对象,True

答案 2 :(得分:1)

相关ifequal标记的文档说明:

  

只能将参数与模板变量进行比较或   字符串。您无法检查与Python对象的相等性,例如   对或错。如果您需要测试某些内容是真还是假,请使用   改为使用if标签。

这可能表明Django模板中确实不存在True和False,除非您使用自定义上下文处理器创建它们。