我对 jinja2 和一般模板的使用非常陌生,所以我想知道是否有一种简单的方法可以加载外部 javascript。我正在考虑使用:
{% block javascript %}
<script src="myscript.js"></script>
{% endblock %}
但我忍不住要问:
有没有办法直接从模板指令中加载这个脚本?
最佳答案
你有两个选择——第一个是你做的方式——只需将适当的标记添加到模板中(或者如果你希望能够在扩展你的第一个模板的模板中覆盖它,则添加一个 block 。)
第二种方法是使用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 模板库,那么很可能会出现问题。
关于python - 使用 jinja2 模板指令加载外部脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3412275/