Javascript可以调用Django方法/函数吗

Can Javascript call a Django method/function?

本文关键字:函数 方法 Django 调用 Javascript      更新时间:2023-09-26

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

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

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

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

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

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

有关Django的更多技术细节,您可以参考Django教程或实用Django项目。

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

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

您可以使用XMLHttpRequest API从JavaScript进行HTTP调用。(这通常被称为AJAX。)您可以向服务器上的URL发送HTTP GET请求(与浏览器单击链接时发送的请求相同)或HTTP POST请求(与您提交某些表单时发送的要求相同)。

您通过urls.py设置Django来处理这个URL,我相信您在教程中已经知道了。

使用AJAX、jQuery或dajax使它变得简单明了。