【问题标题】:Can Javascript call a Django method/function?Javascript 可以调用 Django 方法/函数吗?
【发布时间】:2013-01-21 13:00:50
【问题描述】:

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

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

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

【问题讨论】:

  • 对于这种行为,您需要调用 django 视图的 JavaScript,而后者又调用 djangomodels 方法。
  • 您应该发布该评论作为答案,以便我投票。我认为你说得对;)
  • 我需要相同的功能。你是怎么做到的?
  • @user2760685 我无法回答你的问题,因为过了一段时间我放弃了 Django 并切换到 Play Framework (www.playframework.com/)

标签: javascript python django model-view-controller jquery


【解决方案1】:

浏览器端的 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 tutorialPractical django Projects

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

【讨论】:

  • 在这种情况下,我该如何引入行为?通过调用 Django 方法的特定私有 url?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 2011-05-05
      相关资源
      最近更新 更多