自定义了render和response

main
roger_home_pc 2 years ago
parent c7b54fb2d5
commit 5aed96cb02
  1. 28
      common/myrender.py
  2. 29
      common/myresponse.py

@ -0,0 +1,28 @@
from rest_framework.renderers import JSONRenderer
class MyRenderers(JSONRenderer):
def render(self, data, accepted_media_type=None, renderer_context=None):
print(data)
print(accepted_media_type)
print(renderer_context)
if renderer_context:
if isinstance(data, dict):
msg = data.pop('msg', '请求成功')
code = data.pop('code', renderer_context['response'].status_code)
next = data.pop('next', data['next'])
if 'result' in data:
data = data['result']
else:
next = ''
return_data = {
'code': renderer_context['response'].status_code,
'msg': renderer_context['response'].status_text,
'next': next,
'data': data,
}
return super().render(return_data, accepted_media_type, renderer_context)
else:
return super().render(data, accepted_media_type, renderer_context)

@ -0,0 +1,29 @@
from rest_framework.response import Response
from rest_framework.serializers import Serializer
# 直接复写Response就行
class MyResponse(Response):
def __init__(self, data=None, code=None, msg=None, status=None, template_name=None, headers=None, exception=False,
content_type=None, **kwargs):
super().__init__(None, status=status)
if isinstance(data, Serializer):
msg = (
'You passed a Serializer instance as data, but '
'probably meant to pass serialized `.data` or '
'`.error`. representation.'
)
raise AssertionError(msg)
self.data = dict(code=code, status=status, data=data)
print(kwargs)
self.data.update(kwargs)
print(self.data)
self.template_name = template_name
self.exception = exception
self.content_type = content_type
if headers:
for name, value in headers.items():
self[name] = value
Loading…
Cancel
Save