Фильтровать в пользовательском теге Django?

Я создал пользовательский тег, который принимает параметр:

{% panel "most" %}

Я бы использовал add к параметру:

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

Я ожидаю, что параметром будет "most_people", но вместо этого это "most" | add: "_ people". Кажется, что фильтры не вызываются внутри пользовательских тегов. Как заставить их работать?

1 ответ

Решение

Если вы используете simple_tag Декоратор, чтобы написать свой собственный тег, вы должны быть в состоянии использовать фильтры на аргументы.

Однако, если вы написали расширенный шаблон тега, то вам нужно будет сделать дополнительную работу, чтобы сделать "most"|add:"_people" используйте фильтр как хотите.

Одна из работ - использовать {% with %} тег для присвоения результата фильтра переменной.

{% with panel_name="most"|add:"_people" %}
{% panel panel_name %}
{% endwith %}
Другие вопросы по тегам