объединить несколько блоков в jinja2?

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

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

редактировать :

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


person iamgopal    schedule 27.06.2010    source источник
comment
Не могли бы вы немного подробнее объяснить, что вы пытаетесь сделать?   -  person Ryan Ginstrom    schedule 29.06.2010


Ответы (1)


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

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

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

    function foo(x, y) {
        return x + y;
    }
{% endblock %}
person Nikhil Chelliah    schedule 30.06.2010