开发者

Django JSonResponse对象的实现

开发者 https://www.devze.com 2023-03-25 09:38 出处:网络 作者: 风老魔
目录HttpResponsejsonResponse总结JsonResponse 是 HttpResponse 的子类,与父类的区别在于:
目录
  • HttpResponse
  • jsonResponse
  • 总结

JsonResponse 是 HttpResponse 的子类,与父类的区别在于:

  • JsonResponse 默认 Content-Type 类型为 application/json
  • HttpResponse 默认为 application/text
class JsonResponwww.devze.comse(HttpResponse):

  def __init__(self, data, encoder=DjangoJSONEncoder, safe=True,
          json_dumps_params=None, **kwargs):

HttpResponse

HttpResponse 每次将数据返回给前端需要用 json 模块序列化,且前端也要反序列化:

# views.py
imporpythont json

def index(request):
  message = '请求成功'
  # ret = {'messphpage': '请求成功'}
  return HttpResponse(json.dumps(message))  # 序列化

# index.html
$.AJAX({
  www.devze.comurl: '/accounts/ajax/',
  type: 'post',
  data: {
    'p': 123,
    csrfmiddlewaretoken: '{{ csrf_token }}'
  },
  # 反序列化,或使用 json.parse(arg)
  dataType: "JSON",   
  success: function (arg) {
    console.log(arg.message);
  }
})

JsonResponse

JsonResponse 只能序列化字典格式,不能序列化字符串,且前端不用反序列化:

from django.http import JsonResponse
def index(request):

  ret开发者_Js入门 = {'message': '请求成功'}
  return JsonResponse(ret)  # 序列化

# index.html
$.ajax({
  url: '/accounts/ajax/',
  type: 'post',
  data: {
    'p': 123,
    csrfmiddlewaretoken: '{{ csrf_token }}'
  },
  # 不需要反序js列化
  # dataType: "JSON",   
  success: function (arg) {
    console.log(arg.message);    # 请求成功
  }
})

总结

  • HTTPResponse 后端要用 json 模块序列化,前端也要反序列化。
  • JSonResponse 前端不用反序列化,只能传输字典,不能传输字符串。

到此这篇关于Django JSonResponse对象的实现的文章就介绍到这了,更多相关Django JSonResponse对象内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号