首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用jinja2模板指令加载外部脚本

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

Stack Overflow用户
提问于 2010-08-05 14:33:40
回答 2查看 27.9K关注 0票数 27

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

代码语言:javascript
复制
{% block javascript %}
    <script src="myscript.js"></script>
{% endblock %}

但我不禁要问:

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-10 10:27:41

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

第二种方法是使用JJIA2的include函数:

代码语言:javascript
复制
{% 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模板库,那么可能会出现问题。

票数 42
EN

Stack Overflow用户

发布于 2018-04-18 04:00:12

这个问题很老了,但还有另一种可能很有趣的解决方法。我是在使用Jinja2和flask时发现的。

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

代码语言:javascript
复制
{% block javascript %}
    <script src="{{ url_for('static',filename='myscript.js') }}"></script>
{% endblock %}

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3412275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档