Chargement de script externe avec jinja2 modèle de la directive
Je suis très nouveau à jinja2 et l'utilisation de modèles en général, donc je me demandais si il existe un moyen facile de charger un javascript externe. Je pensais de l'aide:
{% block javascript %}
<script src="myscript.js"></script>
{% endblock %}
Mais je ne peux m'empêcher de demander:
Est-il un moyen de charger ce script directement dans un modèle de la directive?
Vous devez vous connecter pour publier un commentaire.
Vous avez deux choix s'offrent à vous: la première est la façon dont vous l'avez fait -- il suffit d'ajouter le balisage approprié dans un modèle (ou un bloc si vous voulez être en mesure de le remplacer dans les modèles qui permettent de prolonger votre premier modèle.)
La deuxième façon est d'utiliser des Jinja2 de
include
fonction:L'avantage de l'utilisation de
include
est que Jinja2 traiterons votre javascript avant de l'inclure -- ce qui signifie que vous pouvez avoir des variables dans votre fichier javascript qui changent en fonction de l'état de votre programme.L'inconvénient de l'utilisation de
include
de cette manière est la même: votre.js
fichier sera exécuté à travers Jinja2 avant d'être envoyé -- si vous n'êtes pas à l'aide de contenu dynamique, il vous suffira de traitement du fichier inutilement pour chaque demande -- et si vous êtes en utilisant un javascript de template library avec Jinja2 syntaxe ensuite, la difficulté est probablement.Cette question est assez vieux, mais il est une autre façon de faire qui pourrait être intéressant aussi. Je l'ai trouvé tout en travaillant avec Jinja2 et flacon.
J'ai utilisé le
url_for()
et il fonctionne très bien:Et j'ai mon
myscript.js
dans mon statique dossier. Spécifié dans Jinja2 de l'environnement, ou par défaut dans le flacon."
avant{{
et après}}
, c'est à diresrc="{{ url_for('static',filename='myscript.js') }}"
, sinon il n'est pas valide HTML