Python <;脚本>;Django模板中包含的vs

Python <;脚本>;Django模板中包含的vs,python,django,django-templates,Python,Django,Django Templates,有两种方法可以将javascript文件拉入模板。我可以使用标记加载它们,也可以使用Django的include标记将它们加载为模板 假设我希望我的javascript文件能够访问渲染上下文。我对使用反向URL语法{%URL app.views.something%}引用Django视图来命名POST ajax请求感兴趣。我可以很容易地将URL硬编码到我的JS文件中,这会降低它们的可重用性 使用include以便正确呈现URL的缺点是什么?显然,这意味着服务器端的工作要多一些,但这是否意味着其他

有两种方法可以将javascript文件拉入模板。我可以使用标记加载它们,也可以使用Django的include标记将它们加载为模板

假设我希望我的javascript文件能够访问渲染上下文。我对使用反向URL语法{%URL app.views.something%}引用Django视图来命名POST ajax请求感兴趣。我可以很容易地将URL硬编码到我的JS文件中,这会降低它们的可重用性

使用include以便正确呈现URL的缺点是什么?显然,这意味着服务器端的工作要多一些,但这是否意味着其他的工作呢?标签还需要从服务器请求数据,所以我怀疑带宽是否会受到影响。本质上,我们将两个HTTP请求压缩为一个,这实际上可能有价值,对吗


基本上,我在这里寻找一些Django的最佳实践。将javascript文件视为模板是否合适?文档当然可以在几天内完成。人们在实践中会做什么?

我建议以标准的
方式包含脚本源文件,而不是在脚本标记中使用Django Include。如果您有多个页面,并且设置了缓存头,浏览器将缓存您的脚本,因此这样做肯定会节省带宽。但最终我认为这是最有意义的,因为它可以从少量的JS扩展到完整的单页应用程序,并且没有任何缺点

但是,我认为允许在模板中使用Javascript代码,以便根据Django应用程序中的值设置脚本参数。我会保持这非常结构化和本地化。如果您使用主模板来包含样板文件,那么这是一个很好的地方。比如:

<script>
window.appParams = {
   view1Url: {% url app.views.something %},
   ...
}
</script>

window.appParams={
view1Url:{%url app.views.something%},
...
}

没有逻辑,只有声明。

hmmm,所以我实际上让它工作得很好。然后,我做了一些与依赖关系管理相关的更改(开始使用labJS),但它不再工作。我发现了一个参考错误:我发现了。我丢失了脚本标记上的type属性,这是一个谎言。我在属性定义中丢失了一个逗号