首页 > 其他分享 >drf-5.7异常处理 Exceptions

drf-5.7异常处理 Exceptions

时间:2023-01-07 19:11:44浏览次数:49  
标签:exception exc 5.7 framework handler Exceptions 异常 response drf

异常处理 Exceptions

REST framework提供了异常处理,我们可以自定义异常处理函数。

from rest_framework.views import exception_handler

def custom_exception_handler(exc, context):
    # 先调用REST framework默认的异常处理方法获得标准错误响应对象
    response = exception_handler(exc, context)

    # 在此处补充自定义的异常处理
    if response is not None:
        response.data['status_code'] = response.status_code

    return response

在配置文件中声明自定义的异常处理

REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'my_project.my_app.utils.custom_exception_handler'
}

如果未声明,会采用默认的方式,如下

REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler'
}

例如:

补充上处理关于数据库的异常

from rest_framework.views import exception_handler as drf_exception_handler
from rest_framework import status
from django.db import DatabaseError

def exception_handler(exc, context):
    response = drf_exception_handler(exc, context)

    if response is None:
        view = context['view']
        if isinstance(exc, DatabaseError):
            print('[%s]: %s' % (view, exc))
            response = Response({'detail': '服务器内部错误'}, status=status.HTTP_507_INSUFFICIENT_STORAGE)

    return response

REST framework定义的异常

  • APIException 所有异常的父类
  • ParseError 解析错误
  • AuthenticationFailed 认证失败
  • NotAuthenticated 尚未认证
  • PermissionDenied 权限决绝
  • NotFound 未找到
  • MethodNotAllowed 请求方式不支持
  • NotAcceptable 要获取的数据格式不支持
  • Throttled 超过限流次数
  • ValidationError 校验失败

标签:exception,exc,5.7,framework,handler,Exceptions,异常,response,drf
From: https://www.cnblogs.com/kxtomato/p/17033293.html

相关文章

  • drf-3.3反序列化使用
    反序列化使用1.验证使用序列化器进行反序列化时,需要对数据进行验证后,才能获取验证成功的数据或保存成模型类对象。在获取反序列化的数据前,必须调用is_valid()方法进行......
  • drf
    drf1前后端开发模式、API接口、接口测试工具postman、restful规范、序列化和反序列化、drf快速使用、cbv源码分析2APIView的使用、源码分析、Request类源码分析以及序......
  • linux的centos7安装mysql5.7服务教程
    1.使用yum安装,便捷,快速MySQLYumRepositoryMySQL官方新提供了一种安装MySQL的方法--使用YUM源安装MySQL.1、MySQL官方网站下载MySQL的YUM源,在MySQL的下载页有一个“NEW!My......
  • 1.5.7 interrupt-parent
    1.5.7interrupt-parent该属性用于可以产生中断,且中断信号连接到某中断控制器的设备的设备节点,用于表示该设备的中断信号连接到了哪个中断控制器。该属性的值通常是中断控......
  • window下MySQL的压缩包方式安装--单版本或多版本(5.7和8共存)通用
    环境:win11MySQL版本:5.7和8.311.下载MySQL数据库注意:记得查看自己电脑是32位还是64位的,这里下的64位的,64位的电脑可以用32位的包,32位的用64的包可能有问题8版本官网下......
  • Centos Linux 离线安装 MySQL 5.7
    1、下载  https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz2、创建mysql属组、用户、安装目录#创建新数组mysql......
  • mysql 5.7 增加regexp_replace函数
    CREATEDEFINER=`root`@`%`FUNCTION`regexp_replace`(ori_strLONGTEXT,patternVARCHAR(1000),repl_strVARCHAR(1000))RETURNSlongtextCHARSETutf8mb4DETERMI......
  • 【MySQL 8】MySQL 5.7都即将停只维护了,是时候学习一波MySQL 8了【转】
    MySQL8新特性选择MySQL8的背景:MySQL5.6已经停止版本更新了,对于MySQL5.7版本,其将于2023年10月31日停止支持。后续官方将不再进行后续的代码维护。另外,MySQL8.0......
  • mysql 5.7 编译安装及多实例部署
    一、编译安装mysql数据库yum-yinstall\gcc\gcc-c++\make\pcre-devel\expat-devel\perlyum-yinstall\ncurses\ncurses-devel\bison\cmakeuseradd-s/sbin/nol......
  • Mysql5.7的初始密码更改
    软件版本的变化真是让人兴奋……Linux服务器决定安装使用mysql5.7了。愉快的去官网下载安装包:https://dev.mysql.com/downloads/mysql/解决完所有依赖安装……执行sys......