首页 > 其他分享 >drf高级之——自定义全局异常处理

drf高级之——自定义全局异常处理

时间:2023-12-28 17:15:16浏览次数:33  
标签:exception 自定义 detail handler 全局 异常 drf

自定义全局异常处理

 

drf异常处理交给exception_handler处理了,但是没处理非drf的异常

'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler'

 

我们可以重写一个exception_handler方法,处理drf异常和自己的异常

以后只要出现异常,都会走到它

方式如下:

 

第一步:首先创建一个py文件,以 exceptions.py 为例

第二步:导入 exception_handler ,重写方法

from rest_framework.views import exception_handler

 

第三步:书写自定义 common_exception_handler 方法

def common_exception_handler(exc, context):
    # drf的异常,处理了
    res = exception_handler(exc, context)
    if res:  # 有值说明是drf的异常,
        # data = {'detail': exc.detail}
        # return Response(data)
        # {code: 100, msg: 成功}
        detail = res.data.get('detail') or "drf异常,请联系系统管理员"
        return Response({'code': 999, 'msg': detail})
    else: # 如果没值,说明是自己的异常
        return Response({'code': 888, 'msg': '系统异常,请联系系统管理员:%s'%str(exc)})

 

第四步:在settings文件中配置自定义方法

REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'app01.exceptions.common_exception_handler',
}

 

以后处理的异常都会走自定义的方法了

 

标签:exception,自定义,detail,handler,全局,异常,drf
From: https://www.cnblogs.com/wellplayed/p/17933097.html

相关文章

  • 封装一个表情包组件(支持自定义表情图片)(基于vue3语法)
    效果图文件图直接贴代码emotion.vue<template><divclass="emotion-containerbeauty-scroll-livechat"><divclass="emotion-btn"@click="toggleEmotionShow"><spanclass="iconfonticon-biaoqing1&quo......
  • Spring 框架如何创建和解析自定义的 `<mvc:annotation-driven/>` 标签
    跟着孙哥学Spring,b站:https://www.bilibili.com/video/BV185411477k/?spm_id_from=333.337.search-card.all.clickSpring框架如何创建和解析自定义的<mvc:annotation-driven/>标签。1.创建BeanDefinitionParser首先,我们需要创建一个BeanDefinitionParser实现类来解析自......
  • 接口自动化测试第三天,利用类的动态方法设置全局变量
    今天的注意知识点是学会使用jsonpath,利用类的动态方法设置全局变量我们大多数情况下,接口都需要使用到登录时获取的token,为了方便使用,我们需要将登录后的token使用jsonpath表达式提取出来然后设置为全局变量首先提前下载好第三方库,jsonpath,这里给一个jsonpath官方地址和在线练习......
  • [日志] lo4j2之自定义日志格式变量
    1PatternLayout/LogEventPatternConverter:自定义日志格式及格式变量在Log4j或Logback等Java日志框架中,PatternLayout类允许你定义日志输出的格式。PatternLayout通过一系列的转换器(PatternConverter)来定义输出的样式。其中,LogEventPatternConverter(日志格式化......
  • Postgresql中PL/pgSQL的游标、自定义函数、存储过程的使用
    场景Postgresql中PL/pgSQL代码块的语法与使用-声明与赋值、IF语句、CASE语句、循环语句:Postgresql中PL/pgSQL代码块的语法与使用-声明与赋值、IF语句、CASE语句、循环语句上面讲了基本语法,下面记录游标、自定义函数、存储过程的使用。注:博客:霸道流氓气质_C#,架构之路,SpringBoot实......
  • Vue脚手架中加入Vuex全局状态管理中间件
    WebStorm创建Vite(Vue模版)项目后:在main.ts中:import{createApp}from'vue'//@ts-ignoreimport{createStore}from'vuex'import'./style.css'//@ts-ignoreimportAppfrom'./App.vue'//@ts-ignoreconststore=createSt......
  • C# 封装 Windows 全局热键
    全局热键工具类(GlobalHotkey)【文/张赐荣】1.功能概述全局热键工具类(GlobalHotkey)是一个用于注册全局热键的工具类。它允许你在你的应用程序中注册特定的键盘组合,以便在用户按下这些组合时触发相应的事件。此工具类提供了以下主要功能:注册多个热键并定义每个热键的组合。......
  • drf之认证、权限、频率
    认证组件需求:有的接口需要登录后才能访问,有的接口,不登录就能访问——这就是登录认证的限制简单实现的方式:写一个登录接口,返回token,以后只要带着token过来,就是登录了,不带,就没有登录。条件如下:查询所有不需要登录就能访问查询单个,需要登录才能访问登录接口#认证是基于登录......
  • drf之路由、认证组件
    drf之路由自动生成路由drf由于继承ViewSetMixin类,路由写法变了,原生django+drf,以后的路由写法,可能会有如下情况(三种情况)-path('books/',views.BookView.as_view()-path('books/',views.BookView.as_view({'get':'list','post':'create'}))......
  • 哪里有流程自定义表单?
    如果需要提升办公协作效率,可以借助流程自定义表单的功能和价值,快速进入办公流程化发展阶段。那么,哪里有流程自定义表单可以体验?流程自定义表单又有哪些优势特点?通过这篇文章,我们一起来了解流程自定义表单和低代码技术平台的相关特点。我们都知道,随着社会的进步和发展,很多企业已经......