DRF框架中的异常处理程序
DRF框架中自定义异常处理
一、自定义异常的原因
在Django和DRF框架中都封装了很多的处理异常的程序,可以处理框架内的异常问题。但是不是框架内的问题,这些处理异常的程序无法解决,例如数据库的问题等,这些就需要开发人员自定义异常来处理异常。
二、如何设置处理异常的程序
在项目中创建单独的目录utils来存放处理异常的程序的文件
开发者自己开发和封装的工具、函数、方法、类等程序文件均放在这个目录下。
创建exceptions.py文件,在这个文件中编写处理异常程序的代码
导入需要用到的包
'''pythonfrom rest_framework.views import exception_handler
from rest_framework.views import Response
from rest_framework import status
'''
编写异常程序处理代码
- 在编写程序代码的时候我们需要注意:我们自定义的异常处理程序会默认覆盖掉框架封装好的处理程序,所以开发者在自定义程序的时候必须注意先让程序运行框架封装好的代码,再运行自定义异常处理程序。
- 自定义异常处理类的类名默认为:custom_exception_handler,基本的思路是:第一步先运行框架封装的程序,如果没有问题,程序继续执行,这种结果分为两种情况:1.代码没有问题,2.代码有问题,但不是框架内处理的异常问题。第二步无论是哪种情况,代码都需要运行自定义的异常处理程序,如果出现异常终止程序并抛出异常
'''python
class custom_exception_handler(exc, context):
# exc:指的是发生异常的程序和类
# context:发生异常的程序所处的上下文环境
response = exception_hansler(exc, context)
# 通过这个代码来获取框架内程序的异常结果
if response is None:
# 如果异常结果为空,则执行自定义异常程序
if isinstance(exc, ZeroDivisionError):
# isinstance(A, B)用于判断A是否属于B的实例或者子类的实例
print("除数不能为0")
return Response("服务器内部出现错误", status=status.HTTP_500_INTERNAL_SERVER_ERROR)
'''
写好的文件需要在settings.py中进行设置
'''python
REST_FRAMEWORK = [
'EXCEPTION_HANDLER':'utils.exceptions.custom_exception_handler',
# 把自定义的异常处理函数添加到REST_FRAMEWORK中,value是查找路径+函数名称
]
'''
- 创建视图函数,并为视图函数分配路由,进行程序代码的测试
DRF框架中的异常处理程序的更多相关文章
- DRF框架中csrf异常
一.报错信息 "detail": "CSRF Failed: CSRF cookie not set." 二.解决办法 方法一: 在配置文件中配置 REST_F ...
- drf框架中认证与权限工作原理及设置
0909自我总结 drf框架中认证与权限工作原理及设置 一.概述 1.认证 工作原理 返回None => 游客 返回user,auth => 登录用户 抛出异常 => 非法用户 前台 ...
- drf框架中jwt认证,以及自定义jwt认证
0909自我总结 drf框架中jwt 一.模块的安装 官方:http://getblimp.github.io/django-rest-framework-jwt/ 他是个第三方的开源项目 安装:pi ...
- django drf框架中的user验证以及JWT拓展的介绍
登录注册是几乎所有网站都需要去做的接口,而说到登录,自然也就涉及到验证以及用户登录状态保存,最近用DRF在做的一个关于网上商城的项目中,引入了一个拓展DRF JWT,专门用于做验证和用户状态保存.这个 ...
- drf框架中所有视图及用法
0909自我总结 drf框架中所有视图及用法 一.drf框架中的所有视图类 from django.views import View from rest_framework import views ...
- drf框架中分页组件
drf框架中分页组件 普通分页(最常用) 自定制分页类 pagination.py from rest_framework.pagination import PageNumberPagination ...
- DRF框架中链表数据通过ModelSerializer深度查询方法汇总
DRF框架中链表数据通过ModelSerializer深度查询方法汇总 一.准备测试和理解准备 创建类 class Test1(models.Model): id = models.IntegerFi ...
- DRF框架中分页功能接口
目录 DRF框架中分页功能接口 DRF框架中分页功能接口 一.在框架中提供来三个类来实现分页功能,PageNumberPagination.LimitOffsetPagination.CursorPa ...
- SpringMVC框架中的异常解析器-ExceptionHandler和HandlerExceptionResolver
SpringMVC框架中,处理异常还是挺方便的,提供了一个异常解析器. 处理局部异常 @Controller public class AccessController { /** * 处理这个Con ...
随机推荐
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛C. Sum【脑洞题】
限制:1000ms 32768K Define the function S(x) for xx is a positive integer. S(x) equals to the sum of al ...
- Android GDI 图形渲染
发布于2011-07-26 导读:对于Android开发者来说,成系列的技术文章对他们的技术成长帮助最大.如下是我们向您强烈推荐的主题为Android开发的第一个系列文章. <Andro ...
- linux下重启oracle数据库
如何在linux下重启oracle数据库 | 浏览:3930 | 更新:2013-09-18 19:33 1 2 3 4 5 6 分步阅读 在实际工作项目中,有时候会遇到需要对oracle数据库进行重 ...
- C#设置Excel行高、列宽
设置固定值 worksheet.Columns[1].ColumnWidth = 15; 设置自动换行 worksheet.Columns.WrapText = true; 设置自动行高.列宽 xlA ...
- 阿里云DataWorks正式推出Stream Studio:为用户提供大数据实时计算的数据中台
5月15日 阿里云DataWorks正式推出Stream Studio,正式为用户提供大数据的实时计算能力,同时标志着DataWorks成为离线.实时双计算领域的数据中台. 据介绍,Stream St ...
- mysql统计信息相关
最近RDS FOR MYSQL5.6的统计信息有问题,一些表明明的数据,但统计信息里去显示为空表,导致执行计划出错,查询效率很低,所以查看下相关的信息. -- 查看服务器系统变量,实际上使用的变量的值 ...
- IntelliJ IDEA和Eclipse设置JVM运行参数
打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions 文件,需针对不同的JDK进行配置: 32 位:idea.exe.vmoptions64 位:idea64.exe.v ...
- 关于RESTful一些注意事项,和自己整理的接口开发规范
https://blog.csdn.net/u013731455/article/details/56278168 最近在研究restful,公司开发要使用,所以自己就去网上找了好些资料,并整理了一套 ...
- jq实现简单手风琴效果
文章地址:https://www.cnblogs.com/sandraryan/ 利用slideUp slideDown动画 <!DOCTYPE html> <html lang=& ...
- JavaScript引用类型和基本类型的区别
JavaScript变量可以用来保存的两种类型的值:基本类型值和引用类型值. 基本类型值有5种类型:undefined,null,boolean,number,string 引用类型值有两种类型:函数 ...