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/...