【发布时间】:2011-08-06 00:40:25
【问题描述】:
{% if None == False %}
abc
{% endif %}
上面的代码,奇怪的是我的模板显示abc。有什么解释吗?
【问题讨论】:
{% if None == False %}
abc
{% endif %}
上面的代码,奇怪的是我的模板显示abc。有什么解释吗?
【问题讨论】:
奇怪。在普通的python中,
if None == False:
# this will not run
print "abc"
在 Django 上提交一个错误。 :)
【讨论】:
Jason Culverhouse 在我问的另一个类似的question 中提供了答案。
False 和 None 被视为变量,而不是常量。如果在上下文字典中找不到变量,则解析为无。
【讨论】:
这正是 Python 解析“真相”以在不同类型之间进行比较的方式。
查看文档。 “无”被认为是 False。
http://docs.python.org/library/stdtypes.html#truth-value-testing
编辑:如下所示,python 控制台没有确认这种行为,所以,我也很惊讶。 -1 对我!
【讨论】:
现在看来您必须按照post 中的建议创建自己的模板过滤器
【讨论】:
或者,您可以使用if not None。
【讨论】: