27

私はjinja2と一般的なテンプレートの使用に非常に慣れていないので、外部のjavascriptをロードする簡単な方法があるかどうか疑問に思いました。私は使用することを考えていました:

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

しかし、私は尋ねるのを助けることができません:

テンプレートディレクティブ内からこのスクリプトを直接ロードする方法はありますか?

4

2 に答える 2

42

ここでは2つの選択肢があります。1つ目はそれを行った方法です。適切なマークアップをテンプレート(または、最初のテンプレートを拡張するテンプレートでオーバーライドできるようにする場合はブロック)に追加するだけです。

2番目の方法は、Jinja2のinclude関数を使用することです。

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

使用する利点includeは、Jinja2がJavaScriptを含める前に処理することです。つまり、プログラムの状態に応じて変更されるJavaScript内の変数を使用できます。

この方法で使用することの欠点はinclude同じです-.jsファイルは送信される前にJinja2を介して実行されます-動的コンテンツを使用していない場合は、リクエストごとにファイルを不必要に処理するだけです-使用している場合Jinja2構文を使用したjavascriptテンプレートライブラリの場合、問題が発生する可能性があります。

于 2010-08-10T02:27:40.600 に答える
4

この質問はかなり古いものですが、それを行う別の方法も興味深いかもしれません。Jinja2flaskで作業しているときに見つけました。

私はを使用しましたがurl_for()、正常に動作します。

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

そして、私myscript.jsは自分の静的フォルダにいます。Jinja2環境で指定されるか、デフォルトでフラスコで指定されます。

于 2018-04-17T20:00:12.143 に答える