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

drf 异常处理

时间:2022-10-24 17:44:29浏览次数:79  
标签:exc 自定义 处理 handler import 异常 response drf

异常处理

20.1 异常示例

视图

class ExceptionView(APIView):
    def get(self, request):
        a = 1/0
        return Response({"message": "ok"})

路由

from django.urls import path
from . import views

urlpatterns = [
    path('exc/',views.ExceptionView.as_view())
]

访问结果

x2TATH.png

返回的是一个页面,而不是json数据,前端是无法处理的,如果要返回json数据,那么就要进行try,但是每次在可能出现的异常的地方都要try有点麻烦,所以我们要自定义异常。

20.2 自定义异常处理类

opt/exceptions.py

from rest_framework.views import exception_handler
from rest_framework.response import Response

def my_exception_handler(exc, context):
    """
    自定义异常函数
    :exc 本次发生的异常对象
    :context 本次发生异常时的上下文环境信息,为字典类型
    """
    response = exception_handler(exc, context)
    if response is None:  # 如果为None说明drf自己无法处理
        if isinstance(exc, ZeroDivisionError):
            response = Response({"detail": "0不能作为除数或分母"})
    return response

配置全局异常处理类

REST_FRAMEWORK = {

  	......
    # 自定义异常
    'EXCEPTION_HANDLER': 'opt.exceptions.my_exception_handler',
}

访问效果

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "detail": "0不能作为除数或分母"
}

标签:exc,自定义,处理,handler,import,异常,response,drf
From: https://www.cnblogs.com/minqiliang/p/16822234.html

相关文章

  • drf 生成接口文档
    生成接口文档21.1coreapi的使用安装依赖pipinstallcoreapi配置INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contri......
  • Flask作为企业级项目的服务端项目在测试骨架蓝图的伪造资源和环境以及出错处理的方法
    测试骨架首先,我们将测试文件夹添加到应用程序的根文件夹中。然后创建一个Python文件来存储测试内容(test_flaskr.py)。名称与test_*类似。pytest将自动找到py文件。接下来,我......
  • Django drf 权限
    Djangodrf权限15.1权限身份验证或身份识别本身通常不足以获取信息或代码的访问权限。因此,请求访问的实体必须具有授权。—AppleDeveloperDocumentation连同认证......
  • drf视图中调用的请求和响应类
    drf视图中调用的请求和响应类8.1request如果使用视图的时候使用的是drf中的视图(如:APIView),而不是django的视图(View),那么视图中调用的请求对象request不再是原来的req......
  • 1、图像预处理ImageDataGenerator
    1、介绍(1)图片生成器,负责生成一个批次一个批次的图片,以生成器的形式给模型训练;(2)对每一个批次的训练图片,适时地进行数据增强处理(dataaugmentation);数据增强处......
  • 使用DRF实现五个api接口
    使用DRF实现五个api接口2.1新建appdjango-adminstartappapp012.2配置环境#注册app01和rest_framework,由于drf提供了web调试界面,所以静态文件功能不能注释掉,不然......
  • 负载均衡环境下缓存处理
    深入学习EnterpriseLibraryfor.NETFramework2.0的Cache机制——分析篇,这篇文章介绍了很多Caching方面的内容,我就不详细说了,我这里主要说一个最近......
  • 复合事件处理(Complex Event Processing)介绍
    复合事件是由史丹佛大学的DavidLuckham与BrianFraseca所提出,DavidLuckham与BrianFraseca于1990年提出复合事件架构,使用模式比对、事件的相互关系......
  • vue本地项目启动时遇到coreJs相关报错问题处理
    启动项目的时候报错:   是因为core.js这个包丢失,需要大家重新下载即可;yarnaddcore-js ......
  • 在Mac M1 芯片上安装PHP扩展及异常处理 - Swoole
    公司新开发的项目上线了,出于好奇心,打算将网站服务改为swoole测一下性能,正好换了个新电脑,可以从头安装一下Swoole扩展,却发现苹果电脑M1芯片安装起扩展来有很多坑,花了一下午......