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


相关推荐

  • WSFC2012 群集存储空间

    WSFC2012 群集存储空间

    2021年6月8日
    89
  • 通过ReadProcessMemory读取进程内存「建议收藏」

    通过ReadProcessMemory读取进程内存「建议收藏」修改一个程序的过程如下:1、获得进程的句柄2、以一定的权限打开进程3、调用ReadProcessMemory读取内存,WriteProcessMemory修改内存,这也是内存补丁的实现过程。下面贴出的是调用ReadProcessMemory的例程#include<windows.h>#include<tlhelp32.h>BOOLCALLBACKEnum…

    2022年10月4日
    0
  • redis:Could not connect to Redis at 127.0.0.1:6379: Connection refused错误解析「建议收藏」

    redis:Could not connect to Redis at 127.0.0.1:6379: Connection refused错误解析「建议收藏」1.错误信息思考:根据错误信息的字面意思,可以知道,redis-cli客户端程序,通过ip127.0.0.1,端口6379与redis服务器建立连接失败。说明当我们调用redis-cli时,默认是用本地回环地址去与服务器端建立连接。2.解决问题思路:服务器程序会在监听一个套接字(IP+端口号),等待客户端的连接。一般运行服务器程序的时候,都会加载一个配置文件。redis服务器也会读取一个配置文件。如果不知道配置文件在哪里,可以使用:whichredis.conf#或者whe

    2022年5月2日
    113
  • Spring+Spring MVC+MyBatis_java的图书管理系统

    Spring+Spring MVC+MyBatis_java的图书管理系统资源下载:https://download.csdn.net/download/weixin_44893902/35123371练习点设计:添加、删除、修改一、语言和环境实现语言:JAVA语言。环境要求:MyEclipse/Eclipse+Tomcat+MySql。使用技术:Jsp+Servlet+JavaBean或SpringMVC+Spring+Mybatis。二、实现功能为了方便学校对图书进行管理,开发一套BS结构的图书信息管理系统,主要功能如下:首页默认.

    2022年9月26日
    0
  • java和前端哪个好学_java和前端哪个难学?「建议收藏」

    java和前端哪个好学_java和前端哪个难学?「建议收藏」不是同一样东西,无法比较。Java和JavaScript哪个难学?前端和后端哪个难学?问Java和前端哪个难学,就像在问牛排和中餐哪个好吃一样。Java是门编程语言,前端是一个领域不能相比较。再回到正题。Java和JavaScript哪个难学?答案是各有各的难。仅仅对于一门编程语言而已,难也难不倒哪里去。你能说语法很难吗?你能说面向对象很难吗?理解了也没有那么难吧。我大学…

    2022年7月8日
    26
  • visual studio2010注释快捷键_html中注释的快捷键

    visual studio2010注释快捷键_html中注释的快捷键VS注释快捷键操作:  注释:先CTRL+K,然后CTRL+C  取消注释:先CTRL+K,然后CTRL+U

    2022年8月15日
    4

发表回复

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

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