2013-10-04 170 views
0

我想要做這樣的事情:聲明變量,如果變量聲明已經

{% if user.get_profile.gender == 'F' %} 
    var gender = her 
{% endif %} 

{% if user.get_profile.gender == 'M' %} 
    var gender = him 
{% endif %} 

,後來在模板中這樣說:

<a href=#>Message {{gender}}</a> 

而且如果user.get_profile.gender是空的呢?我怎樣才能檢查呢?

對不起,我一般是新的Django和蟒蛇....

回答

1

你不能(容易)做Django的模板語言。這是設計。 documentation mentions this specifically

模板系統是爲了表達表示,而不是程序邏輯。

相反,它會更容易編寫你的剖面模型的簡單方法:

class Profile(models.Model): 
    ... 

    def pronoun(self): 
     if self.gender == 'F': 
      return "her" 
     elif self.gender == 'M': 
      return "him" 
     return "them" 

和調用來代替:

{{ user.get_profile.pronoun }} 

對此的一個替代方案是write a template filter您可以在屬性上使用該值,該值將取字段的值並返回相應的字符串。如果你打算重用功能

@register.filter(name='gender_pronoun') 
def gender_pronoun(value): 
    if self.gender == 'F': 
     return "her" 
    elif self.gender == 'M': 
     return "him" 
    return "them" 

,並在模板

{{ user.get_profile.gender|gender_pronoun }} 
+0

Nooooooooo這樣稱呼它所以這將是有益的!!!!哦好.... - 你的答案有用,thx的幫助! - 「天哪我想'php'」 – Darkagelink

+0

不要擔心,有些練習你會想到這種思維方式。 –