rendererresponse.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. '''
  2. 自定义返回处理
  3. '''
  4. # 导入控制返回的JSON格式的类
  5. from rest_framework.renderers import JSONRenderer
  6. class CustomRender(JSONRenderer):
  7. # 重构render方法
  8. def render(self, data, accepted_media_type=None, renderer_context=None):
  9. # print(data)
  10. # print(renderer_context["response"])
  11. # print(renderer_context["response"].status_code)
  12. # print(renderer_context["response"].accepted_media_type)
  13. if renderer_context:
  14. # 优化处理指定返回code的数据
  15. if isinstance(data, dict) and renderer_context["response"].status_code == 200 and data.get("mtg_name"):
  16. ret = {
  17. 'code': "000000",
  18. 'msg': "success",
  19. 'data': data,
  20. }
  21. return super().render(ret, accepted_media_type, renderer_context)
  22. if isinstance(data, dict):
  23. msg = data.pop('msg', 'success')
  24. code = data.pop('code', renderer_context["response"].status_code)
  25. payload = data.pop('data', data)
  26. else:
  27. msg = "success"
  28. code = renderer_context["response"].status_code
  29. payload = data
  30. renderer_context["response"].status_code = 200
  31. ret = {
  32. 'code': code,
  33. 'msg': msg,
  34. 'data': payload,
  35. }
  36. # 返回JSON数据
  37. return super().render(ret, accepted_media_type, renderer_context)
  38. else:
  39. return super().render(data, accepted_media_type, renderer_context)