我是一个 Django 和 Ajax 的菜鸟, 最近我在完成一个项目,需要去整合这两门技术. 我认为我清楚两门技术背后的原理了,但尚未找到两者整合的优质解释.
有大佬可以快速解释一下代码库是如何随着它们两者的整合而改变的吗?
打个比方,我是否可直接使用带有 Ajax 的 HttpResponse
,还是说我的请求响应必须因为 Ajax 的使用做出改变? 若是如此,请提供一个示例,说明请求的响应必须做出怎样的变化? 对了, 我返回的数据是JSON, 如果这对结果有什么影响的话.
虽然这并非完全符合SO的精神,但我很喜欢这个问题,因为我在入门的时候遇到过同样的问题,所以我会给你一个快速指南. 很显然你不并理解两门技术背后的原理(不要把它作为一种冒犯,但如果你非要这样想,估计你也不会问).
注解: 原文中 SO Spirit 的 SO 根据问题来源猜测应该是 StackOverflow 的缩写, 但是译者查不到有关于这个网站的精神(或原则)是什么. 如清楚的同学可以留言告知.
Django 是服务器端。 这意味着,比如客户端要跳转到某个链接,那么你在视图中需要有一个函数可以渲染他将看到的内容并在 html 页面中返回一个响应。 举个栗子:
views.py:
# 视图
def hello(request):
return HttpResponse('Hello World!')
def home(request):
return render_to_response('index.html', {'variable': 'world'})
index.html:
{# 模板 #}
<h1>Hello {{ variable }}, welcome to my awesome site</h1>
urls.py
# 路由
url(r'^hello/', 'myapp.views.hello'),
url(r'^home/', 'myapp.views.home'),
这是用法的一个最简示例。 转到 127.0.0.1:8000/hello
意味着对 hello
函数发出请求,再转到 127.0.0.1:8000/home
会返回 index.html
并替换所有的变量(你目前应该已经知道这个原理).
现在来谈谈 AJAX . AJAX 的调用就是执行异步 (asynchronous) 请求的客户端代码. 听起来很高大上,说人话就是它在后台执行客户端的请求,然后处理响应. 因此, 当你对某个 URL 执行 AJAX 调用时, 你会拿到直接跳转到相应网址返回的相同数据.
打个比方, 对 127.0.0.1:8000/hello
的 AJAX 调用将返回与直接访问它时获得的相同内容. 但这次,你只有一个 js 函数,你可以随意改造它. 一起来看一个简单的用例:
$.ajax({
url: '127.0.0.1:8000/hello',
type: 'get', // 这是默认值,实际上并不需要特别写出来
success: function(data) {
alert(data);
},
failure: function(data) {
alert('Got an error dude');
}
});
过程大概是这样的:
127.0.0.1:8000/hello
, 和你切换到新标签完成该请求一样.那么现在这里会发生什么? 没错, 你会收到一个 “hello world” 的弹出提示. 如果你用 Ajax 调用 home 请求呢? 同样地,你会收到一个弹出提示,写着
{# 你好呀, 欢迎来到我牛逼哄哄的网站 #}
<h1> Hello world,welcome to my awesome site</ h1>
换句话说 - AJAX 调用并不是什么新鲜玩意, 它们只是让你在不离开当前页面的情况下让用户获取数据和信息的一种方式, 可以让你的网站设计更流畅, 整洁. 这里有你应该注意的一些指导性意见:
注解: 作者给出的教程地址: https://code.tutsplus.com/courses/introduction-to-jquery