Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript可以调用Django方法/函数吗?_Javascript_Python_Django_Model View Controller_Jquery - Fatal编程技术网

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

Javascript可以调用Django方法/函数吗?,javascript,python,django,model-view-controller,jquery,Javascript,Python,Django,Model View Controller,Jquery,想象一下,一个简单的页面有一个计数器和两个按钮。计数器显示的值是读取/存储在模型字段中的值。我希望当我按下“绿色”按钮时,计数器增加1,当我按下“红色”按钮时,计数器减少1。实施此类行为的最佳方式是什么: 按钮调用模型的方法(Django方法),该方法更新模型的字段(DB write);刷新整个页面,并更新计数器显示(DB read) 按钮调用javascript函数,更新计数器显示(JS/HTML);在后台,调用模型的方法(Django方法)来更新模型的字段(DB write) 还有别的办法吗

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

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

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

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

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

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

    有关Django的更多技术详细信息,请参阅或


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

    使用AJAX,或者使其变得简单易懂。

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

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


    您设置Django通过URL.py处理此URL,我相信您从教程中了解到这一点。

    对于此行为,您需要调用Django视图的JavaScript,而Django视图又调用djangomodels方法。您应该将该注释作为答案发布,以便我对其进行投票。我想你是对的;)看看这个很好的例子,我需要相同的功能。你是如何做到的?@user2760685我无法回答你的问题,因为过了一段时间,我放弃了Django,转而使用Play Framework(www.playframework.com/),在这种情况下,我如何引入行为?通过调用Django方法的特定私有URL?