【问题标题】:<script> vs include in Django templates<script> 与包含在 Django 模板中
【发布时间】:2014-03-25 22:22:49
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

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

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

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

    没有逻辑,只有声明。

    【讨论】:

    • hmmm,所以我实际上做得很好。然后我做了一些与依赖管理相关的更改(开始使用labJS),它不再起作用。我收到一个参考错误:
    • 我想通了。我丢失了脚本标签上的类型属性
    • 那是个谎言。我在属性定义中丢失了一个逗号
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 2013-02-13
    • 2012-03-16
    • 1970-01-01
    • 2015-07-30
    • 2015-06-21
    • 1970-01-01
    相关资源
    最近更新 更多