为什么我不能在Django模板中键入它?
data|customTag:variable,forloop.parentloop.counter
我只想将三个或更多参数传递给过滤器
假装已经存在循环并且变量/过滤器已在其他地方定义
答案 0 :(得分:1)
这是不可能的,因为django template filters根据定义只接受一个参数 :
自定义过滤器只是带有一个或两个的Python函数 参数:
变量(输入)的值 - 不一定是字符串。
在 参数的值 - 可以有一个默认值,也可以省略 共
建议使用here的解决方法可能适用于您的用例。
另一种可能的解决方案是将带有2个输入参数的标签拆分为两个带有单个标签的标签,并将它们链接到模板中。它取决于您在过滤器中的逻辑,但可以是一个选项。
答案 1 :(得分:1)
在您的示例中,customTag
是过滤器,而不是模板标记。
According to the docs,Django模板过滤器只接受输入(在您的情况下为data
)和一个可选参数。您收到错误是因为您尝试传递多个参数,这是不可能的。
您可以改为编写custom template tag。模板中的语法为:
{% customTag data variable forloop.parentloop.counter %}