Django HTML 模板中的 Javascript 变量

标签 javascript python django

我正在编写 Django 应用程序,虽然对 Django 有点熟悉,但对 JavaScript 却很不熟悉。我将几行 JavaScript 添加到我的一个页面中以包含一张 map 。

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

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

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

最佳答案

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

您可以看到这会如何迅速失控。下面我提供了代码组织的级别,大致按升序排列(一般来说,越往上越好)

1。使用脚本标签包含您的 JS,而不是嵌入到 HTML 中

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

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

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

由于很多原因,这也不理想,这是因为数据在 Django 模板中被字符串插入:

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

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

有很多方法可以实现,here's a start (尽管可能已过时)

然后我会让 script.js 文件通过简单的 HTTP GET 调用读取数据。许多 JS 库可以轻松地为您完成这项工作。

这种方法的一些优点

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

关于Django HTML 模板中的 Javascript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34843406/

相关文章:

Javascript函数重载,请解释John Resig(Jquery方式)文章

javascript - Firefox 不接受输入类型数字小数

Python - 使用操作系统重命名文件两次

python - 如何在 python 中设置 netCDF4 的 block 大小?

python - Django ModelForm - 名称 'Article' 未定义

javascript - 如何在 Jest 测试中为无状态函数的输入文本元素设置值

javascript - 如何在页面加载时自动播放嵌入 YouTube 视频?

python - 计算 Pandas 每周的变化(使用 groupby)?

python - 2002, "Can' t 通过 socket '/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (2)"in docker-compose up

python - Django索引错误: Pop from empty list