Как динамически включать шаблоны в 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
тег, связанный с путем к каталогу шаблона.