drf 二次封装Response

1,在utils文件夹中常见response.py文件:

from rest_framework.response import Response
from rest_framework.utils.serializer_helpers import ReturnDict  #序列化中返回错误的类型


class APIResponse(Response):
    # 格式化data
    def __init__(self, code=0, msg='success',
                 results=None, http_status=200, headers=None, exception=False, **kwargs):
        # print(111,msg, type(msg))
        if isinstance(msg, ReturnDict):  # 判断序列化中是否返回错误
            for k, v in msg.items():
                msg = '{}:{}'.format(k, v[0])  #获取到第一个错误即break
                break

        data = {
            'status': code,
            'msg': msg
        }
        if results is not None:
            data['results'] = results

        data.update(**kwargs)  # 将传入的其他数据放入data字典

        # 处理完毕数据后,剩下的过程还是丢给Response类中的init做完
        super(APIResponse, self).__init__(
            data=data, status=http_status, headers=headers, exception=exception)
原文地址:https://www.cnblogs.com/noteaddr/p/12956726.html