drf框架之二次封装Response

drf框架之二次封装Response

我们平时所使用返回的Response

return Response({
            'status':0,
            'msg':'ok',
            'results':serializser.APIBookModelserializer(book_obj).data
 },status=200)
 

如果每次都这样返回,这样就会造成业务逻辑中重复的代码太多。所以我们对它进行二次封装

创建一个 response.py

from rest_framework.response import Response

class APIResponse(Response):
    def __init__(self,data_status=0,data_msg='ok',results=None,http_status=None,headers=None,exception=False,**kwargs):
        data = {
            'status':data_status,
            'msg':data_msg
        }
		
		#如果又返回结果就将返回结果赋给到data中
        if results is not None:
            data["results"] = results
		
		#如果传递其他的参数,将会被放到kwargs中被接收
        if kwargs is not None:
            for k,v in kwargs.items():
				#采用反射的方法,去赋值
                setattr(data,k,v) #data[k] = v
       	super().__init__(data=data,status=http_status,headers=headers,exception=exception)
整体的思路
1)创建一个类继承 Response这个类
2)重写Response的初始化方法
3)继承 Response中的初始化方法,返回值就是(self),对我们自定义中的类进行赋值,在这里就是将data中的数据封装成一个字典形式
所以在我们调用的时候直接:
res = serializser.V2BookModelserializer(book_objs,many=True).data
return APIResponse(1,'True',results=res)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值