несколько блоков в jinja2? - PullRequest
10 голосов
/ 27 июня 2010

Я использую jinja2 для моего движка шаблонов в python.

Я хотел бы объединить содержимое нескольких блоков и отобразить его в конце шаблона, непосредственно перед тегом.{это различные фрагменты JavaScript по всему коду в нескольких шаблонах, которые я хотел бы переместить в конец файла, как мне это сделать?}

edit:

Я хотел бы переместить весь свой встроенный JavaScript, созданный в дочерних шаблонах jinja.Я хотел бы переместить их вниз страницы.поэтому я создал блок в родительском шаблоне в конце страницы и использовал его в дочернем шаблоне для написания javascript.но может быть несколько дочерних, и, таким образом, несколько блоков javascript, и так как несколько блоков не поддерживаются в jinja2, какое у меня есть другое решение?-------- один альтернативный вариант, я думаю, это создать сам javascript таким образом, чтобы он не был встроенным.

1 Ответ

19 голосов
/ 30 июня 2010

Я предполагаю, что под несколькими дочерними элементами вы имеете в виду, что существуют шаблоны, наследуемые от шаблонов, наследуемые от шаблонов ... наследующие от базового шаблона.Если это так, вам нужно определить один и тот же блок javascript в каждом шаблоне и вызвать super() для всех дочерних элементов, в дополнение к добавлению большего количества JavaScript.Вызов super() печатает выходные данные родительского блока javascript и так далее по цепочке наследования.Попутно каждый блок может добавить свой собственный код.

Таким образом, вы можете иметь что-то подобное в каждом шаблоне:

{% block javascript %}
    {{ super() }}

    function foo(x, y) {
        return x + y;
    }
{% endblock %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...