使用jinja2模板指令加载外部脚本

kir*_*chi 22 python scripting templates external jinja2

我对jinja2和一般模板的使用都很新,所以我想知道是否有一种简单的方法来加载外部javascript.我在考虑使用:

{% block javascript %}
    <script src="myscript.js"></script>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

但我不禁要问:

有没有一种方法可以直接从模板指令中加载这个脚本?

Sea*_*ira 35

这里有两个选择 - 第一个是您的选择 - 只需将相应的标记添加到模板中(如果您希望能够在扩展第一个模板的模板中覆盖它,则可以添加块).

第二种方式是使用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 %}
Run Code Online (Sandbox Code Playgroud)

使用的好处include是Jinja2会在包含它之前处理你的javascript - 这意味着你的javascript中的变量会根据程序的状态而变化.

include以这种方式使用的缺点是相同的 - 您的.js文件将在发送之前通过Jinja2运行 - 如果您不使用动态内容,您将只是为每个请求不必要地处理文件 - 如果您正在使用一个带有Jinja2语法的javascript模板库很可能会出现问题.

  • 肖恩,谢谢你。您可以从静态文件夹中包含,还是仅从模板文件夹中包含?我问这个,因为 myscript.js 应该位于静态文件夹中。 (2认同)