Django 返回数据 到ajax

Djnago中,HttpResponse 和JsonResponse,返回后直接取值

1.返回字符串

正常使用HttpResponse返回字符串就好

2.视图函数响应JSON数据类型:

  • 使用HttpResponse响应手动序列化后JSON数据直接响应,前端得到的响应数据需要被动反序列化成对应的数据类型
  • 使用HttpResponse响应手动序列化后JSON数据并设置参数content_type='application/json'前端得到的响应数据是经过JSON对象自动进行反序列化后的对应数据类型
  • 使用HttpResponse响应不需要手动序列化JSON数据,直接响应即可,但是对于非字典类型的数据类型需要设置参数safe=False前端得到的响应数据是经过JSON对象自动进行反序列化后的对应数据类型 

①使用HttpResponse响应:未告知类型,前端需要被动解析

视图函数:

data={'status':[1,2,3],'info':'login'}

return HttpResponse(json.dumps(data))#直接发送json字典,前端需要被动反序列化

AJAX回调函数:

success: function (response) {//请求回调函数参数response被动反序列化

    console.log(JSON.parse(response));

    console.log(typeof JSON.parse(response));

②使用HttpResponse响应,告知类型,前段自动调用JSON对象解析

视图函数:

data={'status':[1,2,3],'info':'login'}

return HttpResponse(json.dumps(data),content_type='application/json')#发送json字典,告知类型

return HttpResponse(json.dumps(ret,ensure_ascii=False)) #ensure_ascii=False是告诉json不要对中文进行编码,不然返回给前端的数据中如果有中文的话会被编码成unicode类型的数据,导致前端看不到中文

AJAX回调函数:

success: function (response) {//请求回调函数参数response自动反序列化

    console.log(response);

    console.log(typeof response); 

使用JsonResponse响应,不需要手动进行序列化,同时也不需要告知类型,在响应除字典以外的数据类型时,需要添加参数safe=False

from  django.http  import  JsonResponse

响应字典视图函数:

data={'status':[1,2,3],'info':'login'}

return JsonResponse(data)#使用JsonResponse,直接响应数据

响应非字典视图函数:

data=[{'status':[1,2,3],'info':'login'}]

return JsonResponse(data,safe=False)#使用JsonResponse,直接相应数据,字典以外数据类型徐设置参数safe=False

AJAX回调函数:

success: function (response) {//请求回调函数参数response自动反序列化

    console.log(response);

    console.log(typeof response);

  • 添加到短语集
     
    • 没有此单词集:加利西亚语 → 中文(简体)...
       
    • 创建新的单词集...
  • 拷贝
  • 添加到短语集
     
    • 没有此单词集:英语 → 中文(简体)...
       
    • 创建新的单词集...
  • 拷贝
原文地址:https://www.cnblogs.com/jueshilaozhongyi/p/14106993.html