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 фильтр, смотрите этот так ответ.

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