Django(53)二次封装Response

Django(53)二次封装Response前言有时候我们使用drf的Response,会发现默认返回的格式不太友好,每次我们都需要写入以下的格式returnResponse({"status":0,"

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

有时候我们使用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"
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/165425.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python 奇淫技巧 — 利用pandas读取xml转换为excel

    Python 奇淫技巧 — 利用pandas读取xml转换为excel因为工作需要,将xml中特定的节点值取出来,然后统计到excel中。于是乎试试写了一个python脚本,加快工作效率。而且今后还能复用。以下为完整示例,需要的朋友们可参考。示例XML<?xmlversion=”1.0″encoding=”utf-8″?><breakfast_menu><food><name>BelgianWaffles</name><price>$5.95

    2022年8月22日
    15
  • linux smartctl 命令,在 CentOS 7 里用 smartctl 和 hdparm 对硬盘进行基本测试

    linux smartctl 命令,在 CentOS 7 里用 smartctl 和 hdparm 对硬盘进行基本测试新租服务器,想对硬盘的健康情况和读写速度进行基本测试,如使用CentOS7系统,可使用smartctl和hdparm的命令。过程:1.yum-yinstallsmartmontoolshdparm#安装相应的软件2.smartctl–test=short/dev/sda#假如硬盘设备名称是/dev/sda,进行简单测试3.smartctl-lselftest…

    2022年6月20日
    39
  • JavaScript中的类型判断

    JavaScript中的类型判断js 中的类型判断 1 使用 typeof 进行类型判断 2 使用 instanceof 判断对象 3 使用 Array isArray 判断数组 1 使用 typeof 进行类型判断 functionfun console log 数字的类型为 typeof 1 console log 字符串的类型为 typeof hello console log 布尔值的类型为 typeof true console log undefined 的类型为

    2025年6月29日
    3
  • Ubuntu安装GCC编译器

    Ubuntu安装GCC编译器没有gcc啊如何安装gccapt-getinstallbuild-essential

    2022年7月24日
    12
  • JavaScript SheetJS将 Html 表转换为 Excel 文件

    JavaScript SheetJS将 Html 表转换为 Excel 文件在本教程中,我们可以在客户端从我们的HTML表数据创建一个excel文件。即使用javascript将HTML表导出到Excel(.xlsx)。有许多可用的库可以从HTML表创建CSV文件或xlsx文件,但所有库都给出了提示消息。那就是当我们打开该excel文件时,它会提示一条消息,文件名的文件格式和扩展名不匹配。该文件可能已损坏或不安全。今天这篇文章将使用SheetJS,它允许我们在没有任何提示信息的情况下创建和打开excel文件,这是纯javascript的。使用..

    2022年7月17日
    18
  • 【Verilog】FPGA驱动Ov7670/Ov7725搭建视频通路(RGB565、灰度图)

    【Verilog】FPGA驱动Ov7670/Ov7725搭建视频通路(RGB565、灰度图)一、课题功能指标要求(一)课程目的• 加深对数字电路时序的理解;• 掌握OV系列摄像头输出时序;• 掌握I2C总线时序,以及使用verilog驱动三态门的方法;• 掌握数字系统设计的方法;(二)设计任务o 设计并利用FPGA实现OV7670(Ov7725)~VGA(320*240)显示器的视频通路;o (基本要求)设计I2C总线接口以及控制器,实现对摄像头的配…

    2022年9月13日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号