Django模板(App Engine) - None和False之间的区别

时间:2012-02-09 19:59:08

标签: python google-app-engine

我在Google App Engine上有一个Django模板:

{% if not d.deposited}
    {{ variable }}
{% else %}
    {{ other_variable }}                 
{% endif %}

存放的变量可以是True,False或None。我试图确定值是否是这三个中的一个,但据我所知,False和None被视为相同的事物(意味着if的第一部分被触发两次)。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

在Python中,None is in fact an object表示缺少值。要在Django 1.2或更高版本中专门检查它,请检查deposited本身是否None

{% if d.deposited is None %}
    {{ none_variable }}
{% elif not d.deposited %}
    {{ false_variable }}
{% else %}
    {{ other_variable }}                 
{% endif %}

不幸的是,在1.2之前,if标记功能不是很强大,而是可以使用ifequalifnotequal

{% ifequal d.deposited None %}

另外,如果有兴趣,请参阅the difference between is None and == None上的这篇文章。