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

问题描述 投票:0回答:1

我知道如何在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

django
1个回答
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 %}
© www.soinside.com 2019 - 2024. All rights reserved.