我可以通过两种方式将javascript文件拖到我的模板中。我可以使用标签加载它们,我可以加载它们以使用Django的include标记呈现为模板。
假设我希望我的javascript文件可以访问渲染上下文。我感兴趣的是通过使用反向URL语法{%url app.views.something%}引用Django视图来命名发布ajax请求。我可以轻松地将URL硬编码到我的JS文件中,这样就不那么可以重复使用了。
使用include有什么缺点,以便我的网址正确呈现?显然这意味着更多的服务器端工作,但它是否意味着更多呢?标签还需要从服务器请求数据,因此我怀疑带宽是否受影响。本质上,我们将两个HTTP请求压缩成一个,实际上可能有值,对吗?
基本上,我在这里寻找一些Django最佳实践。将javascript文件视为模板是否合适?我的文件当然可以。人们在实践中做了什么?
答案 0 :(得分:1)
我建议以标准<script src="...">
方式包含脚本源文件,而不是在脚本标记中使用Django include。如果您有多个页面并且设置了缓存标头,则浏览器将缓存您的脚本,因此这样做确实可以节省带宽。但最终我认为它最有意义的仅仅是因为它从小部分JS扩展到完整的单页应用程序,并没有任何缺点。
但是,我认为允许模板中的Javascript代码用于从Django应用程序中的值设置脚本参数。我会保持这种结构化和本地化。如果您使用主模板来包含样板,那么这是一个适合它生存的好地方。类似的东西:
<script>
window.appParams = {
view1Url: {% url app.views.something %},
...
}
</script>
没有逻辑,只是声明。