没有合适的资源?快使用搜索试试~ 我知道了~
首页使用AJAX和Django获取数据的方法实例
前言 使用Django服务网页时,只要用户执行导致页面更改的操作,即使该更改仅影响页面的一小部分,它都会将完整的HTML模板传递给浏览器。 但是如果我们只想更新页面的一部分,则不必完全重新渲染页面-我们可以使用AJAX代替。 AJAX提供了一种将GET或POST请求发送到Django视图并接收任何返回的数据而无需刷新页面的方法。 现代JavaScript包含fetch API,该API为我们提供了一种纯JavaScript方式来发送AJAX请求。 让我们看一下如何通过获取发出GET和POST请求,以在视图和模板之间传递JSON数据。 GET请求 通过获取发出GET请求 通过向其提供视图的URL
资源详情
资源评论
资源推荐

使用使用AJAX和和Django获取数据的方法实例获取数据的方法实例
前言前言
使用Django服务网页时,只要用户执行导致页面更改的操作,即使该更改仅影响页面的一小部分,它都会将完整的HTML模板
传递给浏览器。 但是如果我们只想更新页面的一部分,则不必完全重新渲染页面-我们可以使用AJAX代替。
AJAX提供了一种将GET或POST请求发送到Django视图并接收任何返回的数据而无需刷新页面的方法。 现代JavaScript包含
fetch API,该API为我们提供了一种纯JavaScript方式来发送AJAX请求。
让我们看一下如何通过获取发出GET和POST请求,以在视图和模板之间传递JSON数据。
GET请求请求
通过获取发出通过获取发出GET请求请求
通过向其提供视图的URL和适当的标头来进行带有获取的GET请求。 发出请求后,视图返回请求的数据,然后需要将响应转
换为JSON,然后才能将其用于其他操作。
fetch(URL, {
headers:{
'Accept': 'application/json',
'X-Requested-With': 'XMLHttpRequest', //Necessary to work with request.is_ajax()
},
})
.then(response => {
return response.json() //Convert response to JSON
})
.then(data => {
//Perform actions with the response data from the view
})
URL
提取将URL作为其第一个参数。根据Django项目的URLconf和视图的配置方式,URL可能包含关键字参数或查询字符串,我
们希望在视图中使用该参数来选择请求的数据。
Headers
通过提取进行的AJAX请求将包含多个标头。我们希望数据以JSON形式从视图返回,因此我们将’Accept’标头设置
为’application / json’。在视图中,我们可能要确保该请求是AJAX请求。通过将设置为“ XMLHttpRequest”的“ X-Requested-
With”标头包括在内,该视图将能够检查请求是否为AJAX。
提取不会直接返回数据。相反,它将返回一个承诺,该承诺将被兑现并解决所请求的响应。为了从响应中获取数据,我们必须
通过多次使用.then处理程序来使用链式承诺。第一个.then接收已解析的响应并将其转换为JSON。第二个.then允许我们访问
第一个.then返回的数据,并允许我们使用它,但是我们想更新页面。
在视图中处理GET请求
我们需要一个视图来处理来自fetch调用的AJAX请求。这可以通过多种方式完成,但是最简单的方法之一就是使用基于函数的
视图,该视图接受请求并返回带有请求数据的JsonResponse。
# views.py
from django.http import JsonResponse
def ajax_get_view(request): # May include more arguments depending on URL parameters
# Get data from the database - Ex. Model.object.get(...)
data = {
'my_data':data_to_display
}
return JsonResponse(data)
如果通过包含附加参数的URL访问该视图,则这些附加参数也将与请求一起包含在功能参数列表中。 将根据那些URL参数或
查询字符串(如果使用的话)从数据库中检索数据。 我们要发送回页面的数据必须在提供给JsonResponse的字典中。 调用
之前,请确保从django.http导入JsonResponse。
该视图将返回JsonResponse,该序列将数据字典序列化并将其发送回我们的页面,在此页面中将通过链接的promise进行处
理。 现在,我们可以使用JavaScript使用GET请求中的数据来更新页面的一部分。
POST请求请求
通过提取发出POST请求


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0