我对jinja2和模板的使用是非常陌生的,所以我想知道是否有一种简单的方法来加载外部javascript。我在考虑使用:
{% block javascript %}
<script src="myscript.js"></script>
{% endblock %}
但我不禁要问:
有没有一种方法可以直接从模板指令中加载这个脚本?
发布于 2010-08-10 10:27:41
您在这里有两个选择--第一个是这样做的方式--只需将适当的标记添加到一个模板中(或者,如果您希望能够在扩展第一个模板的模板中覆盖它,则添加一个块)。
第二种方法是使用JJIA2的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模板库,那么可能会出现问题。
发布于 2018-04-18 04:00:12
这个问题很老了,但还有另一种可能很有趣的解决方法。我是在使用Jinja2和flask时发现的。
我使用了url_for()
,它工作得很好:
{% block javascript %}
<script src="{{ url_for('static',filename='myscript.js') }}"></script>
{% endblock %}
我的静态文件夹中有我的myscript.js
。在Jinja2环境中指定,或默认在flask中指定。
https://stackoverflow.com/questions/3412275
复制相似问题