Как динамически включать шаблоны в Django, используя тег "include"
У меня есть 10 html файлов с именами 1.html, 2.html..etc
То, что я хочу, зависит от переменной, в шаблон должен быть включен определенный файл.
например.
{% if foo.paid %}
{% include "foo/customization/{{ foo.id }}.html" %}
{% endif %}
Возможно ли это? Причина, по которой foo.id не переводится, до того, как тег include работает. В результате это дает ошибку. Как можно решить эту проблему по-другому?
Должен ли я создать для него собственный тег шаблона?
Ответы
Ответ 1
Вы можете сделать это с помощью добавить фильтр и с инструкцией.
{% if foo.paid %}
{% with template_name=foo.id|stringformat:"s"|add:".html" %}
{% include "foo/customization/"|add:template_name %}
{% endwith %}
{% endif %}
Сначала вы создаете template_name
, который состоит из foo.id
в строковом формате, объединенном с .html
. Затем вы передаете его тегу include
, объединенному с каталогом пути к шаблону.