码迷,mamicode.com
首页 > 其他好文 > 详细

Django(53)二次封装Response

时间:2021-06-09 15:29:52      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:rgs   for   __init__   前言   django   code   self   lse   封装   

前言

有时候我们使用drfResponse,会发现默认返回的格式不太友好,每次我们都需要写入以下的格式

return Response({
      "status": 0,
      "message": "成功",
      "results": serializer.data
})

这样会非常麻烦,我们想默认就有statusmessage,所以我们可以二次封装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的其他数据
        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)即可

Django(53)二次封装Response

标签:rgs   for   __init__   前言   django   code   self   lse   封装   

原文地址:https://www.cnblogs.com/jiakecong/p/14866217.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!