2010-06-27 29 views
6

Uso jinja2 para mi motor de plantillas en python.concat multiple block en jinja2?

me gustaría unir el contenido del bloque múltiple y me gustaría presentarlo al final de la plantilla, justo antes de la etiqueta. {son varios fragmentos de JavaScript en el código en varias plantillas que me gustaría mover al final del archivo, ¿cómo lo hago? }

edición:

me gustaría pasar toda mi javascript en línea que se crean en las plantillas de Jinja niño. Me gustaría moverlos al final de la página. así que he creado un bloque en la plantilla principal al final de la página y lo uso en una plantilla secundaria para escribir javascript. pero, puede haber varios elementos secundarios y, por lo tanto, múltiples bloques de JavaScript, y como el bloque múltiple no es compatible con jinja2, ¿cuál es la otra solución que tengo? -------- una alternativa creo que es crear javascript en sí mismo de tal manera que no necesita estar en línea.

+0

Podrían explicar en detalle un poco más de lo que estamos tratando de hacer? –

Respuesta

15

Supongo que por varios hijos, quiere decir que hay plantillas que heredan de plantillas heredadas de plantillas ... que heredan de la plantilla base. Si ese es el caso, debe definir el mismo bloque javascript en cada plantilla y llamar al super() en todos los elementos secundarios, además de agregar más JavaScript. Llamar al super() imprime la salida del bloque javascript del elemento principal, y así sucesivamente hasta la cadena de herencia. En el camino, cada bloque puede agregar un código propio.

Por lo que podría tener algo como esto en cada plantilla:

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

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