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/164888.html原文链接:https://javaforall.net

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


相关推荐

  • mysql存储过程执行_mysql存储过程不执行

    mysql存储过程执行_mysql存储过程不执行查看event是否开启:showvariableslike’%sche%’;将事件计划开启:setglobalevent_scheduler=1;关闭事件任务:alterevente_testONCOMPLETIONPRESERVEDISABLE;开户事件任务:alterevente_testONCOMPLETIONPRESERVEENABLE;简单实例….

    2025年11月4日
    3
  • js推断元素是否隐藏[通俗易懂]

    js推断元素是否隐藏

    2022年1月31日
    52
  • 进销存excel_用Excel制作简单的进销存系统「建议收藏」

    进销存excel_用Excel制作简单的进销存系统「建议收藏」最近刚好帮一个朋友做一个进销存系统,因为使用者对电脑操作以及Excel应用能力较弱,我做的进销存系统没有用特别复杂的功能,非常有解决意义,我将手把手将你制作一个简单的进销存系统。需求描述朋友找人合伙开了一个女装店,想要用Excel记录每天的销售数据、定期的进货数据,以及定期盘点库存情况。朋友的合伙人对电脑操作、Excel数据管理能力较弱,前期购买过专用的进销存软件,但是经常会把数据搞乱,因此放弃了…

    2022年5月31日
    56
  • JVM相关问题整理

    备注:针对基本问题做一些基本的总结,不是详细解答!1.运行时数据区域(内存模型)(必考)2.垃圾回收机制(必考)3.垃圾回收算法(必考)4.MinorGC和FullGC触发条件5.GC中Stoptheworld(STW)6.各垃圾回收器的特点及区别,怎么做选择?7.双亲委派模型8.JDBC和双亲委派模型关系9.JVM锁优化和锁膨胀过程10.JVM中G…

    2022年4月6日
    35
  • pip安装、卸载依赖包的命令

    pip安装、卸载依赖包的命令1.【下载】python-mpipinstall–upgradepip2.【指定下载】python3-mpipinstallpip==20.0.2

    2022年10月16日
    4
  • java 多线程死锁案例

    java 多线程死锁案例java 多线程死锁案例

    2022年4月24日
    52

发表回复

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

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