Django(53)二次封装Response

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

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

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

前言

有时候我们使用drf的Response,会发现默认返回的格式不太友好,每次我们都需要写入以下的格式

return Response({
      "status": 0,
      "message": "成功",
      "results": serializer.data
})

这样会非常麻烦,我们想默认就有status和message,所以我们可以二次封装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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 真肝,整理了一周的Spring面试大全【含答案】,吊打Java面试官[通俗易懂]

    真肝,整理了一周的Spring面试大全【含答案】,吊打Java面试官[通俗易懂]对于Java的小伙伴来说,Spring是面试的必问环节,我研究Spring多年,甚至我的网名都叫SpringMeng。最新整理的数据结构和算法的值得收藏:❤️肝完了,一天掌握数据结构和算法面试题,吊打面试官,建议收藏❤️小孟肝了一周,继续给大家整理Spring的系列,帮你offer收到手疼。废话不多话,直接上干货。Q1什么是spring?Spring是个java企业级应用的开源开发框架。Spring主要用来.

    2022年5月30日
  • linux设置node环境变量,Linux 安装最新 Node.js 并配置环境变量「建议收藏」

    linux设置node环境变量,Linux 安装最新 Node.js 并配置环境变量「建议收藏」今天准备在服务器上构建一个前端项目,我的服务器用的Linux是CentOS7,我通过Yum安装了Nodejs。在运行构建命令的时候出现了一堆错误信息,项目也无法成功构建,其中的一段错误信息如下:npmERR!Makesureyouhavethelatestversionofnode.jsandnpminstalled.我使用node-v查看了一下No…

    2022年6月3日
  • css怎么设置注释快捷键,html中注释的快捷键是

    css怎么设置注释快捷键,html中注释的快捷键是html中注释的快捷键是command或ctrl+/超文本标记语言(HyperTextMarkupLanguage),标准通用标记语言下的一个应用。HTML不是一种编程语言,而是一种标记语言(markuplanguage),是网页制作所必备的。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言(或超文本标签语言)的结构包括“头”部分、和“主体”部分,其中“…

    2022年6月9日
  • Linux 硬盘分区生效命令partprobe[通俗易懂]

    Linux 硬盘分区生效命令partprobe[通俗易懂]在Linux中使用fdisk命令进行分区时,有时会遇到“WARNING:Re-readingthepartitiontablefailedwitherror16:Deviceorresourcebusy.Thekernelstillusestheoldtable.Thenewtablewillbeusedatthenextreboot.”这种告…

    2022年10月21日
  • go语言后端框架2021_go语言编译器

    go语言后端框架2021_go语言编译器点击上方蓝色“飞雪无情”关注我,设个星标,第一时间看文章最近写了很多Go语言的原创文章,其中Go语言实战系列就有30篇,近15W字,还有最近更新的Go经典库系列、Gin实战系列,不过通过大…

    2022年10月12日
  • python七夕表白代码(转载)_2019年倒计时日历

    python七夕表白代码(转载)_2019年倒计时日历520即将来袭~普通人表白,发微信买花程序员表白,用代码给女神画玫瑰,画爱心无线弹窗表白,网页无线弹窗表白第一种:心连心fromturtleimport*color(“black”,”red”)pensize(5)begin_fill()penup()goto(50,50)pendown()right(45)goto(100,0)left(90)fd(120)circle(50,225)penup()goto(0,0)pendown()left(13..

    2022年10月14日

发表回复

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

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