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

Другие вопросы по тегам