我是Django的新手,而Ajax的新手。我正在一个需要将两者整合的项目中。我相信我理解它们背后的原理,但是并没有找到对两者的良好解释。
有人可以给我快速解释一下如何将两者集成在一起来更改代码库吗?
例如,我仍然可以将HttpResponseAjax与一起使用,还是必须随着Ajax的使用而改变我的回答?如果是这样,请你举例说明如何更改请求的响应?如果有什么不同,我返回的数据是JSON。
HttpResponseAjax
即使这不完全符合SO精神,但我很喜欢这个问题,因为刚开始时我也遇到了同样的麻烦,因此,我将为你提供快速指南。显然,你不了解其背后的原理(不要将其视为冒犯,但如果你这样做,你将不会提出疑问)。
Django是服务器端的。这就意味着,比如说客户访问URL,你内部就有一个函数views,该函数可以呈现他所看到的内容并以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调用是执行异步请求的客户端代码。这听起来很复杂,但这仅意味着它会在后台为你提出请求,然后处理响应。因此,当你对某个URL进行AJAX调用时,你将获得与前往该位置的用户相同的数据。
例如,对的AJAX调用127.0.0.1:8000/hello将返回与你访问它相同的东西。只有这一次,你才将其包含在JavaScript函数中,并且可以根据需要进行处理。让我们看一个简单的用例:
$.ajax({ url: '127.0.0.1:8000/hello', type: 'get', // This is the default though, you don't actually need to always mention it success: function(data) { alert(data); }, failure: function(data) { alert('Got an error dude'); } });
一般过程是这样的:
现在在这里会发生什么?你会收到有关“ hello world”的警报。如果你拨打AJAX回家电话怎么办?同样,你会收到警告,说明
换句话说-AJAX调用没有新内容。它们只是让你在不离开页面的情况下让用户获取数据和信息的一种方法,它使你的网站设计流畅而整洁。你应该注意一些准则: