Django: построить значение тега {% include%} динамически? - PullRequest
19 голосов
/ 12 января 2011

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

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

Вот пример псевдокода:

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

Спасибо!

Ответы [ 3 ]

21 голосов
/ 12 января 2011

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

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

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

{% include modeTemplate %}

Предполагая, что 'mode' - это переменная python в вашем коде представления.

7 голосов
/ 08 июля 2014

Я думаю, что Голиний дал лучший ответ здесь

В итоге:

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

Например:

 {% with template_name='page_'|add:mode|add:".html" %}
     {% include ""|add:template_name %}
 {% endwith %}
3 голосов
/ 21 марта 2013

Вы можете объединить простые строки и переменные прямо в ваших шаблонах, используя тег with и фильтр add, см. этот ответ SO .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...