Javascript可以调用Django方法/函数吗
Can Javascript call a Django method/function?
想象一个简单的页面,它有一个计数器和两个按钮。计数器显示的值是读取/存储在模型字段中的值。我希望当我按下"绿色"按钮时,计数器增加一,当我按下"红色"按钮时,计数减少一。实现这种行为的最佳方式是什么:
- 按钮调用模型的方法(Django方法),该方法更新模型的字段(DB写入);刷新整个页面并更新计数器显示(DB读取)
- 按钮调用javascript函数,更新计数器显示(JS/HTML);在后台,调用模型的方法(Django方法)来更新模型的字段(DB写入)
- 还有别的办法吗
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使它变得简单明了。
- 如何确保函数/方法参数为certian类型
- Javascript中对象中的函数方法
- Object.assign(),函数方法和内存使用
- 我应该在原型上还是在新创建的实例上调用构造函数方法
- Angular promise回调不是在构造函数方法内部触发,而是在对象文本方法中触发
- 如何使用 Karma、Jasmine 和 Istanbul 指定测试应涵盖哪些函数/方法
- 在ES2015中定义一个类,构造函数方法是什么以及为什么它是必不可少的
- 如何调用通过它传递不同 ID 的函数方法
- Sencha ExtJs 为什么从“构造函数”方法返回“this”
- 这个 JavaScript 函数方法调用了什么
- 如何在 javascript 中从子原型调用父类的构造函数方法
- 是否仍可访问被覆盖的函数/方法
- 在构造函数之外更改 JavaScript 中的构造函数方法
- 这种实例化构造函数方法的风格是什么
- 如何在 JavaScript 中使用继承与构造函数方法一起使用 返回具有私有属性的对象文本
- 我的javascript构造函数方法以文本形式返回整个方法,而不是预期的返回值
- 如何在事件中将变量传递给构造函数方法
- 如何限制用户在ui ace编辑器中只能编写一个javascript函数(方法)
- 打印任何java应用程序的函数/方法调用序列
- 如何在jQuery语句中使用Javascript构造函数方法