Django模板标签使用多个参数过滤

时间:2019-03-08 01:18:44

标签: python django python-3.x python-2.7 django-templates

Django模板标签使用多个参数过滤

@register.filter
def customTag(value, first, second):
...
return result

模板

{{ valor|customTag:first|customTag:second }}

错误

  

customTag需要3个参数,提供了2个

3 个答案:

答案 0 :(得分:1)

您不能将多个参数传递给过滤器(reference)。相反,您可以这样做:

@register.filter
def customTag(value, args):
   first, second = args.split(',')
   ...
   return value

{{ valor|customTag:"first,second"}}  // pass comma separated arguments in string

答案 1 :(得分:1)

我也有这个疑问。 在Django模板中使用{%with as%}获得了很好的结果,但是我需要创建两个过滤器模板标签:

模板标签:

@register.filter
def customTag(value, first):
...
return result1

@register.filter
def customTag2(first, second):
...
return result2

模板html:

{% with value|custom_tag:first as r1%}
    {% with r1|custom_tag2:second as r2 %}
        use your r2 value: {{ r2 }}
    {% endwith %}
{% endwith %}

答案 2 :(得分:0)

我认为仅传递整个customTag而不是参数就可以解决问题。也许还有其他可能的解决方案。

@register.filter("filter_of_custom_tag")
def customTag(custom_tag_instance):
... 
return result

在您的模板中

{{ customTag|filter_of_custom_tag}}