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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Connecting to a eXtremeDB「建议收藏」

    Connecting to a eXtremeDB「建议收藏」TheeXtremeDBODBCdrivercanconnecttoaneXtremeDBdatabaseintwomanners.Thefirst(whichwerecommended)assumesthatthedriveractslikeaRemoteSQLclient.Thisisathinclientthatserializ

    2022年10月14日
    0
  • 一套图 搞懂“时间复杂度”「建议收藏」

    一套图 搞懂“时间复杂度”「建议收藏」一套图 搞懂“时间复杂度”

    2022年4月22日
    64
  • Your branch and ‘XXX’ have diverged

    Your branch and ‘XXX’ have diverged目前没什么好办法,我的做法是新建一条branch,删掉这条有问题的branch。。(这份code最好保存一份)

    2025年6月26日
    0
  • DirectX修复工具 4.0 标准版[通俗易懂]

    DirectX修复工具 4.0 标准版[通俗易懂]简介:DirectX修复工具是一款专用于修复系统异常的工具,DirectX修复工具还是一款使用简单易上手操作且绿色、可免安装的修复工具。使用DirectX修复工具可自动更新C++组件且完美修复0xc000007b问题异常。如果你的电脑出现了DirectX的异常问题,可直接下载DirectX修复工具进行修复解决。DirectX修复工具功能特色:1、一键完成检测修复,只要简单一键选择就能完成检测、修复、注册等一系列问题,使用门槛低,操作简单,真正的傻瓜设计。2、适用多个操作系统,directx修

    2022年6月3日
    67
  • VS code安装和使用技巧

    VS code安装和使用技巧VSCode是微软提供的一款轻量级但功能十分强大的编辑器,内置了对JavaScript,TypeScript和Node.js语言的支持,并且为其他语言如C++,C#,Python,PHP等提供了丰富的扩展库和运行时。一:VSCode的安装(去下载),1.1:VSCode的当前版本为1.18,支持Windows,Ubuntu,Mac1.2:安装VS

    2022年5月22日
    85
  • Java的几个版本

    Java的几个版本一、JavaSE(JavaPlatform,StandardEdition)JavaSE以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。JavaSE包含了支持 JavaWeb服务开发的类,并为JavaPlatform,EnterpriseEdition(JavaEE)提供基础。二、JavaEE(JavaPlatform,EnterpriseEdition) 这个版本以前称为J2EE。企业版本帮助开发和部署可移植

    2022年7月8日
    21

发表回复

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

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