• Django(53)二次封装Response


    前言

    有时候我们使用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的其他数据
            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"
    }
    
  • 相关阅读:
    CodeForce 677C
    1A -- Theatre Square
    CodeForce 677B Vanya and Food Processor
    CodeForce 680C Bear and Prime 100
    1B -- Spread sheet
    socket.io 推送
    网站性能测试
    openlayers/// Puppeteer.js
    div 光标处插入内容
    emjoi 表情
  • 原文地址:https://www.cnblogs.com/jiakecong/p/14866217.html
Copyright © 2020-2023  润新知