zoukankan      html  css  js  c++  java
  • 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"
    }
    
  • 相关阅读:
    ubuntu16.04 下anaconda3安装教程
    conda基本知识
    caffe学习三:使用Faster RCNN训练自己的数据
    labelImg
    caffe学习二:py-faster-rcnn配置运行faster_rcnn_end2end-VGG_CNN_M_1024 (Ubuntu16.04)
    python开发中的高级技巧
    Splash 渲染引擎简介
    Splash 渲染引擎简介
    scrapy框架使用splash渲染引擎爬取动态页面
    scrapy框架使用splash渲染引擎爬取动态页面
  • 原文地址:https://www.cnblogs.com/jiakecong/p/14866217.html
Copyright © 2011-2022 走看看