django模板渲染默认值在非False时被评估

时间:2016-06-14 22:16:40

标签: django django-templates

考虑以下django模板片段:

{{ user.get_full_name|default:user.username }}

我希望如果user.get_full_name成功,那么它会使用该值,而忽略其余的值。但是,当我尝试使用get_full_name()方法但没有用户名属性的用户模型时,它会失败,说该对象没有用户名(即使它有get_full_name)。这是预期的行为吗?

1 个答案:

答案 0 :(得分:1)

Templatetags调用Python函数。与default过滤器的<{3}}类似

@register.filter(is_safe=False)
def default(value, arg):
    """If value is unavailable, use given default."""
    return value or arg

因此,即使第一个值为True,仍然需要第二个值,因为它们都是由模板引擎传递给Python函数。