在自定义 Django 标签中过滤?

Filter in custom Django tag?

我创建了一个接受参数的自定义标签:

{% panel "most" %}

我会使用 add 参数:

{% panel "most"|add:"_people" %}

我希望参数是 "most_people",但实际上是 "most"|add:"_people"。似乎在自定义标签内没有调用过滤器。如何让它们发挥作用?

如果您使用 simple_tag 装饰器编写您的自定义标签,您应该能够对参数使用过滤器。

但是,如果您已经编写了 advanced template tag,那么您将需要做额外的工作才能使 "most"|add:"_people" 根据需要使用过滤器。

一种解决方法是使用 {% with %} 标记将过滤器的结果分配给变量。

{% with panel_name="most"|add:"_people" %}
{% panel panel_name %}
{% endwith %}