2010-06-27 22 views
6

Io uso jinja2 per il mio motore di template in python.concat multiplo in jinja2?

Vorrei unire il contenuto di più blocchi e vorrei renderlo alla fine del modello, appena prima del tag. {sono vari frammenti JavaScript in tutto il codice in più template che vorrei spostare alla fine del file, come faccio? }

edit:

Vorrei spostare tutto il mio javascript inline che si creano nei modelli bambino Jinja. Mi piacerebbe spostarli in fondo alla pagina. quindi ho creato un blocco nel modello principale alla fine della pagina e lo utilizzo nel modello secondario per scrivere javascript. ma potrebbe esserci più figlio, e quindi più blocchi javascript, e poiché il blocco multiplo non è supportato in jinja2, qual è l'altra soluzione che ho? -------- un altro penso che sia quello di creare javascript stesso in modo tale che non ha bisogno di essere in linea.

+0

potrebbero spiegare un po 'più dettagliato cosa sta cercando di fare? –

risposta

15

Suppongo che per più bambini, intendi che ci sono modelli che ereditano da modelli che ereditano da modelli ... che ereditano dal modello di base. In tal caso, è necessario definire lo stesso blocco javascript in ciascun modello e chiamare super() in tutti i bambini, oltre ad aggiungere altro JavaScript. La chiamata a super() stampa l'output del blocco javascript genitore e così via sulla catena di ereditarietà. Lungo la strada, ogni blocco può aggiungere il proprio codice.

Così si potrebbe avere qualcosa di simile in ogni modello:

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

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