考虑以下django模板片段:
{{ user.get_full_name|default:user.username }}
我希望如果user.get_full_name
成功,那么它会使用该值,而忽略其余的值。但是,当我尝试使用get_full_name()
方法但没有用户名属性的用户模型时,它会失败,说该对象没有用户名(即使它有get_full_name
)。这是预期的行为吗?
答案 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函数。