Django: динамически построить значение тега {% include%}?

Я хотел бы использовать тег {% include page.html %} в моем шаблоне Django и динамически строить значение page.html.

Есть ли способ сделать это в Django?

Здесь пример псевдокода:

{% include page_{{mode}}.html %}

Спасибо!

Ответы

Ответ 1

Из документов:

Имя шаблона может быть переменная или жестко закодированная (котируемая) строка в одном или двух котировки.

Создайте переменную в своем представлении и передайте ее в свой шаблон через контекст, например "modeTemplate": "page _" + mode + ". html". Затем выполните:

{% include modeTemplate %}

Предполагая "режим" - это переменная python в вашем коде просмотра.

Ответ 2

Я думаю, что goliney предоставил лучший ответ здесь

Вкратце:

Вы можете объединить встроенный django с тегом шаблона, чтобы назначить динамически сконструированное имя шаблона переменной и 'добавить' фильтр и динамически построить имя шаблона.

Например:

 {% with template_name='page_'|add:mode|add:".html" %}
     {% include ""|add:template_name %}
 {% endwith %}

Ответ 3

Вы можете объединить обе строки и переменные прямо в своих шаблонах с помощью тега with и фильтра add см. ответ здесь в SO: fooobar.com/info/40536/...