django模板奇怪的行为

时间:2011-04-15 02:57:51

标签: django django-templates

{% if None == False %}
    abc
{% endif %}

上面的代码,奇怪的是我的模板显示为abc。有什么解释吗?

5 个答案:

答案 0 :(得分:3)

怪异。在常规python中,

if None == False:
    # this will not run
    print "abc"

提交Django的错误。 :)

答案 1 :(得分:3)

Jason Culverhouse在我提出的另一个类似question中提供了答案。

False和None被视为变量,而不是常量。如果在上下文字典中找不到变量,则解析为None。

答案 2 :(得分:1)

这就是Python解析“真相”以便在不同类型之间进行比较的方式。

查看文档。 “无”被认为是假的。

http://docs.python.org/library/stdtypes.html#truth-value-testing

编辑:如下所示,python控制台不会确认此行为,所以,我也很惊讶。 -1给我!

答案 3 :(得分:0)

现在看来您必须按照此post

中的建议创建自己的模板过滤器

答案 4 :(得分:0)

或者,您可以if not None