template police jinja async africa python templates scripting jinja2 external

python - police - Cargando script externo con la directiva de la plantilla jinja2



jinja2 template render (2)

Esta pregunta es bastante antigua, pero hay otra forma de hacerlo que también podría ser interesante. Lo encontré mientras trabajaba con Jinja2 y el matraz .

Utilicé url_for() y funciona bien:

{% block javascript %} <script src={{ url_for(''static'',filename=''myscript.js'') }}></script> {% endblock %}

Y tengo mi myscript.js en mi carpeta estática. Especificado en el entorno Jinja2, o por defecto en el matraz.

Soy muy nuevo en jinja2 y en el uso de plantillas en general, así que me preguntaba si hay una manera fácil de cargar un javascript externo. Estaba pensando en utilizar:

{% block javascript %} <script src="myscript.js"></script> {% endblock %}

Pero no puedo evitar preguntar:

¿Hay alguna forma de cargar este script directamente desde una directiva de plantilla?


Tiene dos opciones aquí: la primera es la forma en que lo hizo, simplemente agregue el marcado apropiado en una plantilla (o un bloque si desea poder anularlo en las plantillas que extienden su primera plantilla).

La segunda forma es usar la función de include de Jinja2:

{% block javascript %} <script type="text/javascript"> {% include "myscript.js" %} </script> <!-- The contents of myscript.js will be loaded inside the script tag --> {% endblock %}

La ventaja de usar include es que Jinja2 procesará su javascript antes de incluirlo, lo que significa que puede tener variables en su javascript que cambian según el estado de su programa.

La desventaja de utilizar include de esta manera es la misma: su archivo .js se ejecutará a través de Jinja2 antes de enviarlo. Si no está utilizando contenido dinámico, simplemente procesará el archivo innecesariamente para cada solicitud. está utilizando una biblioteca de plantillas javascript con sintaxis Jinja2, por lo que es probable que haya problemas.