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 和 python....

4

1 回答 1

1

你不能(很容易)用 django 的模板语言做到这一点。这是设计使然。该文档特别提到了这一点

模板系统旨在表达演示,而不是程序逻辑。

相反,在您的配置文件模型上编写一个简单的方法会容易得多:

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 }}

另一种方法是编写一个模板过滤器,您可以在属性上使用该过滤器,该属性将获取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 }}
于 2013-10-04T14:00:14.680 回答