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

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


相关推荐

  • 用C语言进行Windows编程入门

    用C语言进行Windows编程入门用C语言进行Windows编程入门本文对一般教程或网上有的(如C语言语法等基础)不深入介绍,对初学者易造成疑惑误解或难以找到的内容进行较详尽的介绍。学习C语言很久了,一直面对控制台应用程序(Win32ConsoleApplication),没有漂亮的界面,是不是不爽呀。用C开发图形界面程序,有多种技术方案,本文希望用简单的例子,深入浅出的介绍一种方案——用C和SDK进行图形界面编程。…

    2022年6月18日
    23
  • java——继承

    java——继承

    2021年9月29日
    41
  • GirdView 通过 RenderControl 导出 excel 日期问题

    GirdView 通过 RenderControl 导出 excel 日期问题for(inti=0;i<gt.Rows.Count;i++){ gt.Rows[i].Cells[7].Text=Convert.ToDateTime(gt.Rows[i].Cells[7].Text).ToString("yyyy年MM月dd日HH:mm:ss");}

    2022年7月20日
    14
  • token多平台身份认证架构设计思路

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:哈莫 cnblogs.com/beer/p/6029861.html 1、概述 在存在账号体系的信息系统中,对…

    2021年6月28日
    88
  • 服务器中了挖矿病毒怎么办

    服务器中了挖矿病毒怎么办前言服务器好端端的竟然中了挖矿病毒!!!可怜我那1核2G的服务器,又弱又小,却还免除不了被拉去当矿工的命运,实在是惨啊惨。事情原来是这样的。。。就在今天下午,我准备登陆自己的远程服务器搞点东西的时候,突然发现ssh登陆不上了。如上,提示被拒绝。这个问题很明显就是服务器没有我的公钥,或者不识别我的公钥,然后拒绝登录。这就很难办了,我确定我的公钥是一直没有变动过的,不应该会出现这种情况啊。还有让我头疼的是,我当初为了安全起见,设置过此台服务器只能通过ssh的方式

    2022年6月3日
    102
  • Mybatis分页查询[通俗易懂]

    Mybatis分页查询[通俗易懂]分页查询作为数据库交互最常用的几种操作之一,在日常开发中是非常常见的,比如前段请求需要一个分页的列表,往往有两种方式,一是把所有的数据都给到前段,前段分页。另外一种方式是前端通过传分页信息给后端,后端查询时进行分页,并将相应页的数据返给前端。第一种方式如果数据规模比较小的情况下可以使用,如果数据量较大,对内存、网络传输的消耗都是非常大的,所以实际开发中一般很少使用。第二种方式是后端进行分页,后端分…

    2022年6月2日
    98

发表回复

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

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