drf中封装自己的Response对象

1.普通版本的Response封装

  • 新建一个response的文件夹
  • 在新建的文件中写入封装的自定义的Response对象
class MyResponse():
    def __init__(self):
        self.status = 100
        self.msg = None
    @property
    def get_dict(self):
        return self.__dict__
  • 在视图函数中引入自己封装的对象
# -----自己没封装Response前的写法

class Test(APIView):
    def get(self,request):
        response={'status':'100','msg':None}
         #写一堆逻辑
        response['data']={'name':'jack','age':19}
       response.data={}

        return Response(response)

# -----自己没封装Response前的写法
from app01.response import MyResponse
class Test(APIView):
    def get(self, request):
        response = MyResponse()
        # 写一堆逻辑
        response.status=101
        response.msg='失败了'
        response.data={'name': 'jack', 'age': 19}

        return Response(response.get_dict)

2.高级版本的Response封装

  • 创建response文件夹
  • 封装自己的Response代码
class APIResponse(Response):
    def __init__(self, code=100, msg=None, data=None, status=None,
                 template_name=None, headers=None,
                 exception=False, content_type=None, **kwargs):
        dic = {'status': code, 'msg': msg}
        if data:
            dic['data'] = data
        if kwargs:
            dic.update(kwargs)

        super().__init__(data=dic, status=status,
                         template_name=template_name, headers=headers,
                         exception=exception, content_type=content_type)
  • 使用
# ---------在视图类中使用
return APIResponse(msg='成功了',data={'name': 'lqz', 'age': 19},next=9)
posted @ 2022-03-30 10:50  recordlife  阅读(126)  评论(1编辑  收藏  举报