Django(53)二次封装Response
前言
有时候我们使用drf
的Response
,会发现默认返回的格式不太友好,每次我们都需要写入以下的格式
return Response({
"status": 0,
"message": "成功",
"results": serializer.data
})
这样会非常麻烦,我们想默认就有status
和message
,所以我们可以二次封装response
二次封装Response
我们在项目的目录中新建一个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的初始状态
data = {
'statusCode': data_status,
'message': data_msg
}
# data的响应数据体
if results is not None:
data['results'] = results
# data的其他数据
data.update(kwargs)
super().__init__(data=data, status=http_status, headers=headers, exception=exception)
上述代码对data
字段复了初始值,statusCode
值为0,message
值为ok
,然后判断返回的内容中是否有results
字段,有的话data
数据中再返回一个results
,最后判断是否有额外的参数,比如我们要返回一个token
给前端,这样以后我们返回数据的时候,如果默认是成功的类型,只需要写return APIResponse(results=serializer.data)
即可
我们这里模拟返回一个token
,代码如下
return APIResponse(results=serializer.data, token="123abcppp")
然后访问url
,可以看到返回的结果就会增加token
{
"statusCode": 0,
"message": "ok",
"results": {
"id": 4,
"name": "test",
"age": 18,
"sex": 1
},
"token": "123abcppp"
}