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