4

想象一个带有计数器和两个按钮的简单页面。计数器显示的值是在模型字段中读取/存储的。我希望当我按下“绿色”按钮时计数器加一,当我按下“红色”按钮时计数器减一。实现这种行为的最佳方法是什么:

  1. 按钮调用模型的方法(Django 方法)更新模型的字段(数据库写入);刷新整个页面并更新计数器显示(读取 DB)。
  2. 按钮调用更新计数器显示(JS/HTML)的javascript函数;在后台,调用模型的方法(Django 方法)来更新模型的字段(DB 写入)。
  3. 还有另一种方式?

javascript代码可以调用Django函数吗?我是 Django 的新手(我按照教程直到第 4 部分)。我已经了解 MVC/MTV 概念和数据读/写/显示,但现在困扰我的是在我的页面上引入行为/交互性。

4

3 回答 3

20

浏览器端的 JavaScript 位于前端,而 Django 位于后端(服务器端)。前者既不能也不需要直接调用后者的函数。它们之间的接口通常是 Web 服务 API,即使用 Web 服务中定义的 URL 进行 AJAX 调用的浏览器,这些 URL 由 Django 提供支持。

更具体地说,JavaScript 将 HTTP 请求发送到 Web 服务器,然后 Django 的 URL 调度程序将请求 URL 映射到相应的 Django 视图(基于函数或基于类)。简而言之,一个典型的路线可以简化为:

JavaScript -> HTTP 请求 -> Django URL 调度程序(映射规则在 urls.py 或 urls/XXX.py 中)-> Django 视图函数(views.py 或 views/XXX.py)-> Django 表单(可选)-> Django 模型(可选)。

更多 Django 技术细节,您可以参考Django 教程Practical django Projects

最后一句话:即使 JavaScript 可以调用 Django 函数方法/函数,也应该避免。从 Web 服务的角度来看,Django 方法/函数只是实现细节,更容易发生变化(与 Web 服务 API 相比)。后端开发人员可能会更改函数名称,切换到 Django 以外的其他框架,甚至出于任何原因更改 Java、Ruby 或 PHP 等编程语言。

于 2013-02-06T10:57:35.900 回答
4

JavaScript 在浏览器中运行,而 Django 在服务器上运行。浏览器使用 HTTP 与服务器通信。

您可以使用XMLHttpRequest API从 JavaScript 进行 HTTP 调用。(这通常称为 AJAX。)您可以向服务器上的 URL。

您设置 Django 以通过 urls.py 处理此 URL,我相信您从教程中知道。

于 2013-02-06T11:15:42.890 回答
1

使用 AJAX、jQuerydajax使其变得简单易用。

于 2013-02-06T11:13:48.383 回答