私はjinja2と一般的なテンプレートの使用に非常に慣れていないので、外部のjavascriptをロードする簡単な方法があるかどうか疑問に思いました。私は使用することを考えていました:
{% block javascript %}
<script src="myscript.js"></script>
{% endblock %}
しかし、私は尋ねるのを助けることができません:
テンプレートディレクティブ内からこのスクリプトを直接ロードする方法はありますか?
ここでは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テンプレートライブラリの場合、問題が発生する可能性があります。
この質問はかなり古いものですが、それを行う別の方法も興味深いかもしれません。Jinja2とflaskで作業しているときに見つけました。
私はを使用しましたがurl_for()
、正常に動作します。
{% block javascript %}
<script src="{{ url_for('static',filename='myscript.js') }}"></script>
{% endblock %}
そして、私myscript.js
は自分の静的フォルダにいます。Jinja2環境で指定されるか、デフォルトでフラスコで指定されます。