我是 Django 新手,也是 Ajax 新手。我正在做一个需要整合两者的项目。我相信我了解它们背后的原理,但没有找到对两者一起的很好解释。
有人可以快速解释一下代码库必须如何随着他们两个集成在一起而改变吗?
例如,我是否仍然可以使用HttpResponseAjax,或者我的响应是否必须随着 Ajax 的使用而改变?如果是这样,您能否举例说明对请求的响应必须如何更改?如果有什么不同,我返回的数据是 JSON。
HttpResponse
尽管这并不完全符合 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'})
索引.html:
<h1>Hello {{ variable }}, welcome to my awesome site</h1>
网址.py:
url(r'^hello/', 'myapp.views.hello'), url(r'^home/', 'myapp.views.home'),
这是最简单的用法示例。Going to127.0.0.1:8000/hello表示对函数的请求hello(),going to127.0.0.1:8000/home将返回index.html并替换所要求的所有变量(您现在可能已经知道所有这些了)。
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 调用会发生什么?同样,您会收到一条警报,说明<h1>Hello world, welcome to my awesome site</h1>.
<h1>Hello world, welcome to my awesome site</h1>
换句话说 - AJAX 调用没有什么新鲜事。它们只是您让用户在不离开页面的情况下获取数据和信息的一种方式,它可以使您的网站设计流畅且非常整洁。您应该注意的一些准则:
console.log
csrf_token
这就是我想到的一切。这是一个广泛的主题,但是,是的,那里可能没有足够的例子。慢慢来,慢慢来,你最终会得到它。