Django: построить значение тега {% include %} динамически?
Я хотел бы использовать {% include page.html %}
тег в моем шаблоне Django, и построить значение page.html
динамически.
Есть ли способ сделать это в Джанго?
Вот пример псевдокода:
{% include page_{{mode}}.html %}
Спасибо!
3 ответа
Из документов:
Имя шаблона может быть либо переменной, либо жестко закодированной (заключенной в кавычки) строкой в одинарных или двойных кавычках.
Поэтому создайте переменную в своем представлении и передайте ее шаблону через контекст, скажем, как "modeTemplate": "page_"+mode+". Html". Затем сделайте:
{% include modeTemplate %}
Предполагая, что 'mode' - это переменная python в вашем коде представления.
Я думаю, что Sergey Goliney дал лучший ответ здесь
В итоге:
Вы можете объединить встроенный в шаблон django тег "with", чтобы назначить динамически сконструированное имя шаблона для переменной и фильтр "add" и динамически создать имя шаблона.
Например:
{% with template_name='page_'|add:mode|add:".html" %}
{% include ""|add:template_name %}
{% endwith %}
Вы можете объединять простые строки и переменные прямо в ваших шаблонах, используя with
тег и add
фильтр, смотрите этот так ответ.