Frage

Ich bin sehr neu zu jinja2 und die Verwendung von Vorlagen im allgemeinen so dass ich mich gefragt, ob es ein einfacher Weg, eine externe Javascript zu laden. Ich dachte an mit:

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

Aber ich kann nicht Hilfe fragen:

Gibt es eine Möglichkeit, dieses Skript zum Laden direkt aus einer Vorlage Richtlinie?

War es hilfreich?

Lösung

Sie haben zwei Möglichkeiten hier - die erste ist die Art und Weise Sie es getan haben - einfach das entsprechende Markup in eine Vorlage hinzufügen (oder einen Block, wenn Sie es in Vorlagen in der Lage sein wollen, außer Kraft zu setzen, die Ihre erste Vorlage erweitern.)

Der zweite Weg ist Jinja2 include -Funktion:

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

Der Vorteil include ist, dass Jinja2 Ihr Javascript, bevor einschließlich verarbeiten - was bedeutet, dass Sie Variablen in JavaScript haben können, dass der Wandel auf dem Zustand des Programms abhängig.

Der Nachteil include auf diese Weise verwendet, ist die gleiche - Ihre .js Datei durch Jinja2 wird ausgeführt, vor ausgesendet wird - wenn Sie nicht dynamische Inhalte verwenden, werden Sie nur die Datei für jede Anforderung unnötig Verarbeitung werden - und wenn Sie eine Javascript-Templating Bibliothek mit Jinja2 Syntax dann Probleme verwenden, ist wahrscheinlich.

Andere Tipps

Diese Frage ist ziemlich alt, aber es ist eine andere Art und Weise tun, die auch interessant sein könnten. Ich fand es während der Arbeit mit Jinja2 und Kolben .

habe ich die url_for() und es funktioniert gut:

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

Und ich habe meinen myscript.js in meinem statischen Ordner. in Jinja2 Umgebung angegeben oder standardmäßig in der Flasche.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top