Django HTML模板中的Javascript变量

Pat*_*ors 5 javascript python django

我正在写一个Django应用程序,虽然有点熟悉Django,但我对JavaScript很不熟悉.我在我的一个页面中添加了几行JavaScript以包含地图.

该脚本只包含初始化地图,然后根据保存在我的数据库中的信息添加标记.

鉴于代码太少,将脚本保留在HTML模板中并使用我的数据库传递信息仍然被认为是不好的做法{{info}}吗?

如果是这样,你认为哪种方法更好?

bak*_*kal 2

我假设你的建议是将JS脚本及其所需的数据放入模板中(数据通过字符串插值注入到JS脚本中)

您可以看到这种情况如何很快就会失控。下面我提供了代码组织的级别,大致按升序排列(一般来说,级别越高越好)

1. 使用 script 标签包含 JS,而不是嵌入到 HTML 中

首先:将 JS 放入自己的 .js 文件中并通过<script>标签包含它很容易。那么让我们这样做吧。而且,现代浏览器可以并行加载文件,因此同时加载 HTML 和 JS 文件是一个优点。

2. 避免使用 Django 模板将数据输入 JS

现在我看到人们做的另一个问题是使用 before 包含他们的 JS 代码将数据传递到 JS 中<script>data = {"info": "something"}</script>

由于多种原因,这也不理想,因为数据是在 Django 模板中进行字符串插值的:

3.让JS通过Django(REST)API拉取数据

然而,既然你说你熟悉 Django,我想建议你创建一个视图,以 JSON 格式返回客户端 JS 所需的数据。{"info": "something"}例如,返回的东西/api/info

有很多方法可以实现这一点,这是一个开始(尽管可能已经过时)

然后我让 script.js 文件通过简单的 HTTP GET 调用读取数据。许多 JS 库可以轻松地为您做到这一点。

这种方法的一些优点

  • 您的代码(JS 部分)独立于数据部分(JSON 数据)
  • 您可以轻松查看/测试输入到 JSON 中的内容,因为它只是一个 HTTP GET 请求
  • 您的 HTML/JS 部分是完全静态的,因此可以缓存,从而提高加载页面的性能。
  • Python 数据到 JSON 的转换非常简单(没有插值功夫)