有时候我们使用drf的Response,会发现默认返回的格式不太友好,每次我们都需要写入以下的格式
return Response({ "status": 0, "message": "成功", "results": serializer.data })这样会非常麻烦,我们想默认就有status和message,所以我们可以二次封装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的其他数据 if kwargs is not None: for k, v in kwargs.items(): self[k] = v # 或者 setattr(kwargs, k, v) 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)即可