后台response和异常处理封装

我们自己封装的一些东西,往往放在一个utils文件夹内,以后也方便管理和导入

image

后台response封装

# 自己封装的Response对象

from rest_framework.response import Response

class APIResponse(Response):
    def __init__(self,code=1,msg='成功',result=None,status=None,headers=None,content_type=None,**kwargs):
        dic = {
            'code':code,
            'msg':msg
        }
        if result:
            dic['result']=result
        dic.update(kwargs)
        super().__init__(data=dic,status=status,headers=headers,content_type=content_type)

自己封装的异常处理

# 这里用来放全局异常

# 这个方法可以从rest_framework里的settings.py里找到它的配置,然后导入就行,重写该方法
from rest_framework.views import exception_handler
from . import response # 导入自己定义的响应对象
from .logger import log  #导入自己定义的日志对象


def common_exception_handler(exc, context):
    # 记录以下报错信息到日志中
    # context['view']可以取到具体是哪个视图出了错
    log.error('view是:%s,错误是:%s' %(context['view'].__class__.__name__,str(exc)))
    # 先调用一下原来的exception_handler方法
    ret = exception_handler(exc, context) # ret是一个Response对象,其内部有一个data属性,放的就是错误信息
    # 这个表示如果drf处理不了的异常(交给django处理的异常),我们进行处理一下
    if not ret:
        # 这里面也可以放更多其他逻辑,具体对于会出现的异常进行分类处理
        # 比如下面这样
        # if isinstance(exc,KeyError):
        return response.APIResponse(code=0,msg='error',result=str(exc))
    else:
        # ret.data是一个字典,字典里是drf处理的异常信息
        return response.APIResponse(code=0,msg='error',result=ret.data)

封装完毕之后,还需要在settings里配置一下,告诉drf采用我们封装的异常处理

# 放自己的全局异常
REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'luffyapi.utils.exceptions.common_exception_handler',
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:后台response和异常处理封装 - Python技术站

(0)
上一篇 2023年4月2日 下午4:35
下一篇 2023年4月2日

相关文章

  • 数据库配置限)不用root用户操作数据库了(为数据库创建用户,并赋予权限)

    步骤 1.为路飞项目创建数据库 在mysql终端输入以下代码: create database luffy charset=utf8; 2.创建数据库用户 create user ‘username’@’host’ identified by ‘password’; 其中username为自定义的用户名;host为登录域名,host为’%’时表示为 任意IP…

    Python开发 2023年4月2日
    00
  • django中的auth模块与admin后台管理

    1. auth模块 在创建完django项目之后,执行数据库迁移之后,数据库里会增加很多新表,其中有一张名为auth_user的表,当访问django自带的路由admin的时候,需要输入用户名和密码,其参照的就是auth_user表 使用python3 manage.py crataesupperuser 可以创建超级管理员用户,同时在auth_user表里…

    2023年4月2日
    00
  • 小程序子页面向父页面传值、腾讯云对象存储上传图片

    1. 页面传值 1.1 父页面向子页面传值 父页面: /pages/xx/xxx?id=1 子页面 // option就可以接收到父页面传来的值 onLoad:function(option){ } 1.2 子父页面 子页面 var pages = getCurrentPages() var prevPage = pages[pages.length-2] …

    Python开发 2023年4月2日
    00
  • 文章添加页(富文本编辑器的使用)

    1.文章添加页url开设 2.添加文章页面已经富文本编辑器的使用 富文本编辑器kindeditor只要到官网下载下来,放入static文件夹就行,如何在html的script处添加对应固定代码 {% extends ‘backend/base.html’ %} {% block article %} <h3>添加随笔</h3> &lt…

    2023年4月2日
    00
  • 首页轮播图后端接口设计

    逻辑导航 1.当一访问127.0.0.1:8000时,就会向某一地址发送请求2.请求接口需要返回首页所需要的轮播图片3.前端vue轮播图组件循环一下后端发送的图片连接列表,依次展示轮播图 轮播图表设计 轮播图中一些共有的字段,我们可以创建一个公共的基础表,以后需要该字段直接基础该表就行 基表,可以放在自己写的utils.py里,以便后期使用! from dj…

    2023年4月2日
    00
  • 文章的点赞点踩制作

    文章的添加 博客园打开需要拷贝的文章,右键检查–》选择cnblogs_post_body这一个div,然后复制outer HTML到admin后台文章表里面 最后需要在文章详情页的文章内容那一行添加一个|safe 点赞点踩制作 前端样式: 不会写,直接拷贝博客园的点赞点踩html和css样式 {# 点赞点踩样式开始:复制博客园的点赞点踩样式,拷贝其对应的o…

    2023年4月2日
    00
  • 计算机介绍和五大组成

    1. 什么是计算机 计算机俗称‘电脑’,通电的人脑。其实,计算机所有的组成部分,都是模仿人的某一个功能或者器官。 2. 为什么要有计算机 为了执行人类通过编程语言编写的文件程序,从而把人类解放出来。 3.计算机的组成部分 计算机有五大组成部分:控制器、运算器、存储器、输入设备、输出设备。 3.1 控制器 它是计算机的指挥系统,负责控制计算机其他的组件如何进行…

    2023年4月2日
    00
  • 将侧边栏制成inclusion_tag

    在开发过程中,像侧边栏这种功能的版块,我们在很多页面都需要使用到的时候,我们则需要在视图函数中书写重复的代码,这样很繁琐,我们可以将侧边栏制成inclusion_tag,后面我们需要用到侧边栏功能时,只需要导入即可! 将侧边栏制成inclusion_tag的步骤: 1.在应用下创建一个名字必须叫templatetags的文件夹 2.在该文件夹内,创建一个任意…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部