Как динамически включать шаблоны в Django, используя тег "include" - программирование
Подтвердить что ты не робот

Как динамически включать шаблоны в Django, используя тег "include"

У меня есть 10 html файлов с именами 1.html, 2.html..etc То, что я хочу, зависит от переменной, в шаблон должен быть включен определенный файл.

например.

{% if foo.paid %}
    {% include "foo/customization/{{ foo.id }}.html" %}
{% endif %}

Возможно ли это? Причина, по которой foo.id не переводится, до того, как тег include работает. В результате это дает ошибку. Как можно решить эту проблему по-другому? Должен ли я создать для него собственный тег шаблона?

4b9b3361

Ответ 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, объединенному с каталогом пути к шаблону.