如果已经声明了变量,则声明变量

时间:2013-10-04 13:53:13

标签: django django-templates

我想做这样的事情:

{% 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和python的新手......

1 个答案:

答案 0 :(得分: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,您可以在属性上使用gender字段的值,并返回相应的字符串。如果您计划重用函数

,这将非常有用
@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 }}