2010-06-27 15 views
6

Używam jinja2 do mojego silnika szablonów w Pythonie.konkatować wiele bloków w jinja2?

Chciałbym dołączyć do treści wielu bloków i chciałbym renderować go na końcu szablonu, tuż przed tagiem. {są to różne fragmenty kodu JavaScript w całym kodzie w wielu szablonach, które chciałbym przenieść na koniec pliku, jak to zrobić? }

edit:

Chciałbym przenieść całe inline JavaScript, które są tworzone w szablonach Jinja dziecko. Chciałbym przenieść je na dół strony. dlatego utworzyłem blok w szablonie nadrzędnym na końcu strony i używając go w szablonie podrzędnym do napisania javascript. ale może istnieć wiele potomków, a więc wiele bloków javascript, a ponieważ wiele bloków nie jest obsługiwanych w jinja2, jakie jest inne rozwiązanie? -------- jeden alternatywny uważam, że jest stworzenie javascript w taki sposób, że nie musi być inline.

+0

może wyjaśnić w trochę bardziej szczegółowo, co chce zrobić? –

Odpowiedz

15

Zakładam, że przez wiele dzieci, masz na myśli, że istnieją szablony dziedziczące z szablonów dziedziczących z szablonów ... dziedziczących z szablonu podstawowego. W takim przypadku musisz zdefiniować ten sam blok javascript w każdym szablonie i wywołać super() we wszystkich elementach podrzędnych, a także dodać więcej skryptów JavaScript. Wywołanie super() drukuje dane wyjściowe bloku rodzica javascript, i tak dalej w górę łańcucha dziedziczenia. Po drodze każdy blok może dodać własny kod.

Więc można mieć coś takiego w każdym szablonie:

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

    function foo(x, y) { 
     return x + y; 
    } 
{% endblock %}