如何将三个参数传递给django templatetags过滤器?

时间:2017-12-19 12:54:31

标签: django

我知道如何在Django的模板标签过滤器中传递两个参数,但有点混淆如何使用3个参数。

我的模板标签 -

@register.filter("status_of_booking")
def status_of_booking(status,create_date,from_time):
    print create_date
    print status
    return 'hola'

我正在传递这样的三个参数,它显示错误: -

{{ item.status|status_of_booking:item.classSession.date,item.id }}

并显示错误: status_of_booking requires 3 arguments, 2 provided

1 个答案:

答案 0 :(得分:3)

Django模板过滤器采用零个或一个参数。多个参数是不可能的。

在您的情况下,您可以使用item作为第一个参数,而不是status

@register.filter("status_of_booking")
def status_of_booking(item):
    print item.create_date
    print item.status
    return 'hola'

然后在你的模板中:

{{ item|status_of_booking }}

如果您确实需要多个参数,则必须将status_of_booking从过滤器更改为模板标记,

@register.simple_tag
def status_of_booking(status, create_date, from_time):
    print create_date
    print status
    return 'hola'

并将模板更改为:

{% status_of_booking item.status item.classSession.date item.id %}