diff --git a/common/myrender.py b/common/myrender.py new file mode 100644 index 0000000..1ca442c --- /dev/null +++ b/common/myrender.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) + diff --git a/common/myresponse.py b/common/myresponse.py new file mode 100644 index 0000000..3c8bcf9 --- /dev/null +++ b/common/myresponse.py @@ -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