使用jinja2模板directi加载外部脚本

2024-04-27 21:57:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我对jinja2和模板的使用非常陌生,所以我想知道是否有一种简单的方法来加载外部javascript。我想用:

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

但我忍不住问:

是否可以直接从模板指令中加载此脚本?


Tags: 方法src脚本模板jinja2指令jsscript
2条回答

这个问题已经很老了,但是还有另一种方法可能也很有趣。我在与Jinja2烧瓶一起工作时发现的。

我用了url_for()它工作得很好:

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

我的myscript.js在静态文件夹中。在Jinja2环境中指定,或默认在烧瓶中指定。

这里有两种选择——第一种是您的方式——只需将适当的标记添加到模板中(如果您希望能够在扩展第一个模板的模板中覆盖它,则添加块)

第二种方法是使用Jinja2的^{}函数:

{% 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模板库,则可能会出现问题。

相关问题 更多 >