【发布时间】:2015-03-06 01:29:24
【问题描述】:
为什么我不能在 Django 模板中输入这个?
data|customTag:variable,forloop.parentloop.counter
我只是希望能够将三个或更多参数传递给过滤器
假装已经有 for 循环并且变量/过滤器已经在别处定义了
【问题讨论】:
标签: django django-templates django-template-filters
为什么我不能在 Django 模板中输入这个?
data|customTag:variable,forloop.parentloop.counter
我只是希望能够将三个或更多参数传递给过滤器
假装已经有 for 循环并且变量/过滤器已经在别处定义了
【问题讨论】:
标签: django django-templates django-template-filters
这是不可能的,因为django template filters 只接受一个参数根据定义:
自定义过滤器只是需要一两个的 Python 函数 论据:
变量(输入)的值——不一定是字符串。
参数的值——这可以有一个默认值,或者被忽略 完全一致。
有一个建议的解决方法here 可能适用于您的用例。
另一种可能的解决方案是将带有 2 个输入参数的标签拆分为两个标签,其中一个标签并将它们链接到模板中。这取决于您在过滤器中的逻辑,但可以作为一个选项。
【讨论】:
在您的示例中,customTag 是 过滤器,而不是模板标记。
According to the docs,Django 模板过滤器只接受输入(在你的情况下为data)和一个可选参数。您收到错误是因为您试图传递多个参数,这是不可能的。
你可以写一个custom template tag。模板中的语法是:
{% customTag data variable forloop.parentloop.counter %}
【讨论】:
simple_tag 装饰器,它应该会为您解决这个问题。否则,您可以从context 中获取变量。