之间的区别我对谷歌App Engine的Django模板:Django模板(App引擎) - 无与假
{% if not d.deposited}
{{ variable }}
{% else %}
{{ other_variable }}
{% endif %}
沉积可以是真,假或无变量。我试图确定这个值是否是这三个值中的一个,但据我所知,False和None被视为相同的东西(意味着if的第一部分被触发两次)。有没有办法解决?
之间的区别我对谷歌App Engine的Django模板:Django模板(App引擎) - 无与假
{% if not d.deposited}
{{ variable }}
{% else %}
{{ other_variable }}
{% endif %}
沉积可以是真,假或无变量。我试图确定这个值是否是这三个值中的一个,但据我所知,False和None被视为相同的东西(意味着if的第一部分被触发两次)。有没有办法解决?
在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
标签是不是很厉害,而是你可以使用ifequal
和ifnotequal
。
{% ifequal d.deposited None %}
另外,如果有兴趣,请参阅the difference between is None
and == None
上的这篇文章。
我不相信'{%if foo是None%}'语法在Django 0.96中可用,它是应用程序引擎上python 2.5的默认值。 – geoffspear 2012-02-10 00:29:16
确认它不起作用。 'TemplateSyntaxError:'if'声明格式不正确' – rhefner1 2012-02-10 18:45:41
@ rhefner1,@Wooble:如果{%if foo == None%}'? – voithos 2012-02-10 20:35:44
对不起,我犯了一个错误 - 我的意思是说False和None都被视为同一件事。 – rhefner1 2012-02-10 18:44:13