2

我有这个代码:

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

当然,输出是what?(当然,因为否则我不会问这个问题,对吗?)

模板世界中不True存在?

4

3 回答 3

4

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

于 2012-06-19T18:29:41.010 回答
3

发生这种情况是因为您的上下文中没有该True对象,因此它解析为虚假。Django 模板不是简单的 Python 包装器。你不会有通常的globals()对象,True包括在内。

于 2012-06-19T19:18:48.330 回答
2

相关ifequal标签的文档说:

只能将参数与模板变量或字符串进行比较。您无法检查 Python 对象是否相等,例如 True 或 False。如果您需要测试某事是真还是假,请改用 if 标记。

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

于 2012-06-19T18:29:39.200 回答