2012-06-19 111 views
2

我有这样的代码:django模板 - 如果True返回false?

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

和输出,当然,what?(当然,因为我不会问这样的问题,否则,我会?)

True不存在模板世界?

+0

我从来没有意识到这是事实。你有一个依赖“if True”的用例吗?或只是你遇到的东西? –

+0

只是我遇到了 - 我没有太多的用途,如果真如我自己... – bharal

回答

3

这是有趣的,可能被认为是一个错误,但我想它与处理模板标签的方式有关。 if的第一个参数很可能被当作上下文变量来处理,所以它在上下文字典中查找True,当然,因为没有True密钥,所以什么也没有。

1

的相关ifequal标签的文件说:

只有可以比较的参数模板变量或 字符串。您无法检查Python对象是否相等,如 True或False。如果您需要测试某些内容是否为真,请使用if标签代替 。

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

2

发生这种情况是因为您的环境中没有True对象,因此它解决了虚假问题。 Django模板不是简单的Python包装器。您将不会包含通常的globals()对象,其中包括True

相关问题