2012-02-09 68 views
1

之间的区别我对谷歌App Engine的Django模板:Django模板(App引擎) - 无与假

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

沉积可以是真,假或无变量。我试图确定这个值是否是这三个值中的一个,但据我所知,False和None被视为相同的东西(意味着if的第一部分被触发两次)。有没有办法解决?

+0

对不起,我犯了一个错误 - 我的意思是说False和None都被视为同一件事。 – rhefner1 2012-02-10 18:44:13

回答

2

在Python中,Noneis 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上的这篇文章。

+0

我不相信'{%if foo是None%}'语法在Django 0.96中可用,它是应用程序引擎上python 2.5的默认值。 – geoffspear 2012-02-10 00:29:16

+0

确认它不起作用。 'TemplateSyntaxError:'if'声明格式不正确' – rhefner1 2012-02-10 18:45:41

+0

@ rhefner1,@Wooble:如果{%if foo == None%}'? – voithos 2012-02-10 20:35:44