2012-02-09 66 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