我有这样的代码:django模板 - 如果True返回false?
{% if True %}
yo!
{% else %}
what?
{% endif %}
和输出,当然,what?
(当然,因为我不会问这样的问题,否则,我会?)
不True
不存在模板世界?
我有这样的代码:django模板 - 如果True返回false?
{% if True %}
yo!
{% else %}
what?
{% endif %}
和输出,当然,what?
(当然,因为我不会问这样的问题,否则,我会?)
不True
不存在模板世界?
这是有趣的,可能被认为是一个错误,但我想它与处理模板标签的方式有关。 if
的第一个参数很可能被当作上下文变量来处理,所以它在上下文字典中查找True
,当然,因为没有True
密钥,所以什么也没有。
的相关ifequal
标签的文件说:
只有可以比较的参数模板变量或 字符串。您无法检查Python对象是否相等,如 True或False。如果您需要测试某些内容是否为真,请使用if标签代替 。
这可能表明True和False的确不存在于Django模板中,除非您使用自定义上下文处理器创建它们。
发生这种情况是因为您的环境中没有True
对象,因此它解决了虚假问题。 Django模板不是简单的Python包装器。您将不会包含通常的globals()
对象,其中包括True
。
我从来没有意识到这是事实。你有一个依赖“if True”的用例吗?或只是你遇到的东西? –
只是我遇到了 - 我没有太多的用途,如果真如我自己... – bharal