我有这段代码:
{% if True %}
yo!
{% else %}
what?
{% endif %}
,输出当然是what?
(当然,因为我不会问这个问题,不是吗?)
模板世界中不存在True
吗?
答案 0 :(得分:3)
这很有趣,可能被认为是一个错误,但我想它与模板标签的处理方式有关。 if
的第一个参数可能被视为上下文变量,因此它在上下文字典中查找True
,当然,因为没有True
密钥而得不到任何内容。
答案 1 :(得分:2)
发生这种情况是因为您的上下文中没有True
对象,因此它解析为虚假。 Django模板不是简单的Python包装器。您不会包含通常的globals()
个对象,True
。
答案 2 :(得分:1)
相关ifequal
标记的文档说明:
只能将参数与模板变量进行比较或 字符串。您无法检查与Python对象的相等性,例如 对或错。如果您需要测试某些内容是真还是假,请使用 改为使用if标签。
这可能表明Django模板中确实不存在True和False,除非您使用自定义上下文处理器创建它们。