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