首页
学习
活动
专区
圈层
工具
发布

Django+DRF 实战:从异常捕获到自定义错误信息

一、DRF 异常介绍APIException 类是 DRF 异常的基类。通过继承APIException,DRF 提供了多种内置异常类。ParseError:当请求解析失败时抛出。...AuthenticationFailed:认证失败时会出现这个异常。NotAuthenticated:未认证的用户访问需要权限的资源时触发。PermissionDenied:权限被拒绝时抛出该异常。...Throttled:请求被限流时会出现这个异常。ValidationError:数据验证失败时触发。通过继承 APIException 类,可以实现自定义(业务)异常。并根据业务需求在视图层返回。...default_code = 'service_unavailable'ValidationError 异常rest_framework.exceptions.ValidationError异常,一般用于序列化器...最小长度和最大长度校验昵称最小长度和最大长度校对密码最小长度和最大长度定义视图定义用户注册视图,调用序列化器的is_valid()方法,对用户请求参数校验实战效果用户名校验失败:用户名中含有下划线昵称校验失败:昵称太短密码校验失败:密码太长点击查看完整代码您正在阅读的是《Django从入门到实战

8100

Flask框架在Python面试中的应用与实战

Django REST framework (DRF) 是一个强大而灵活的工具包,用于构建Web API,特别是基于Django的应用程序。...版本控制:讨论DRF中实现API版本控制的方法,如URL路径版本、请求头版本等。...异常处理:介绍如何使用DRF的异常体系(如PermissionDenied、NotAuthenticated、ValidationError等)处理错误情况,并自定义异常响应。...= [DjangoFilterBackend] filterset_fields = ['category', 'author']响应格式不统一:在项目中统一响应格式,包括状态码、数据结构、错误消息等...return Response(data, status=HTTP_200_OK)三、实战代码示例以下是一个使用DRF构建简易博客文章API的示例,涵盖了上述部分知识点:from django.contrib.auth.models

42510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django集成Swagger全指南:两种实现方案详解

    API 描述格式(JSON/YAML)便于前后端协作和 API 版本管理两种方案对比特性 drf-yasg drf-spectacular 规范支持 Swagger...2.0 OpenAPI 3.0 功能丰富度基础功能完善 高级功能更丰富 可定制性 中等 高...学习曲线 平缓 稍陡 推荐场景 简单项目快速集成复杂项目、需要高级定制二、方案一:使用 drf-yasg(支持 Swagger 2.0)工具介绍...(支持 OpenAPI 3.0)工具介绍drf-spectacular 是新一代 API 文档生成工具,支持 OpenAPI 3.0 规范,具有以下优势:更强的可扩展性和可定制性支持客户端代码生成兼容多种...kwargs): """删除岗位""" return Response({"code": 0, "data": True, "msg": ""}, status=200)您正在阅读的是《Django从入门到实战

    17410

    Django-djangorestframework-异常模块-源码及自定义异常

    目录 异常模块 为什么要自定义异常模块 常见的几种异常情况 异常模块源码分析 自定义 drf 异常处理 异常模块 为什么要自定义异常模块 所有经过 drf APIView 视图类产生的异常,都可以提供异常处理方案...drf 异常处理模块处理后的异常 ? drf 异常处理模块处理后的异常 ? 异常信息经汉化后的报错(django 配置了国际化后) ?...get_exception_handler_context 源码,异常处理类是从配置中拿来的 def get_exception_handler(self): """...'api.apps.ApiConfig', 'rest_framework', # 注册 drf ] # 2.在 restframework 的配置中配置该自定义异常模块 REST_FRAMEWORK...'EXCEPTION_HANDLER': 'api.exception.exception_handler', # 全局配置异常模块 }

    1.4K10

    DRF系列总结二:脚手架搭建

    ,在Django基础工程的基础上,安装DRF并进行配置:比如统一接口返回格式、统一异常处理等,并在后面的文章中,不断完善出一套DRF脚手架,以降低后面的开发同学的趟坑成本。...for the browsable API. pip install django-filter # Filtering support 备注:安装DRF时,请留意周边版本依赖,比如: [3.10.2...基础策略、视图侧配置、后台分页、异常处理等几个部分,接下来我们开始自定义配置: 配置接口认证和权限 REST_FRAMEWORK = {...然后,我们简单修改了下ModelViewSet: class ModelViewSet(viewsets.ModelViewSet): """定制ModelViewSet""" _keys...部分接口的路由单独拎出来,比如以/api/开头的路由到DRF提供的接口中: [根目录下的urls.py] 而在具体app的路由中,直接使用DRF的router模块,并将视图视图注册到路由中即可: [app

    4K60

    DRF框架(二)——解析模块(parsers)、异常模块(exception_handler)

    如何使用:自定义exception_handler函数如何书写实现体 api应用下创建处理异常文件exception.py 为什么要配置解析模块 1)drf给我们提供了多种解析数据包方式的解析类 form-data...(走到逻辑异常都能被控制) 为什么要自定义异常模块 1)所有经过drf的APIView视图类产生的异常,都可以提供异常处理方案 2)drf默认提供了异常处理方案(rest_framework.views.exception_handler...),但是处理范围有限 3)drf提供的处理方案两种,处理了返回异常现象,没处理返回None(后续就是服务器抛异常给前台) 4)自定义异常的目的就是解决drf没有处理的异常,让前台得到合理的异常信息返回,...'EXCEPTION_HANDLER': 'api.exception.exception_handler', #设置自定义异常文件路径,在api应用下创建exception文件,...exception_handler函数 } api应用下创建处理异常文件exception.py 1)先将异常处理交给rest_framework.views的exception_handler去处理

    72910

    企业微信API接口发消息实战:从0到1的技术突破之旅

    摘要:本文详细介绍了通过企业微信官方API接口实现消息发送功能的完整实战流程。首先阐述了企业微信API在数字化办公中的重要性,重点讲解了消息发送接口的应用场景。...在获取 Access Token 时,可能会遇到网络异常、参数错误等问题。...此时,需要在代码中添加异常处理机制,捕获 JSON 解析异常,并进行相应的日志记录和错误处理。...针对这些问题,我们分别采取了定时刷新或发送前检查 Token 有效性、仔细检查参数和权限配置并添加重试机制、设置合理超时时间以及添加异常处理机制等解决方案,确保了消息发送功能的顺利实现。...消息发送接口 解释:核心API,用于向成员/部门发送消息,URL需带AccessToken。 接口文档 10.

    58110

    从GPT定制到Turbo升级再到Assistants API,未来AI世界,你准备好了吗?

    这一消息对于受AI影响广泛的各行各业都具有深远的意义。 不仅如此,OpenAI还发布了性能更强大、速度更快的GPT-4 Turbo版本,为用户提供了更加高效的人工智能体验。...用户无需编码,通过自然语言即可定制个人AI Agent,并在OpenAI应用商店分享并获得分成。这一简单操作的创新使定制版GPT服务于各领域,包括学习、工作、家庭等,为用户提供更灵活的AI应用选择。...这一举措不仅增加了个体用户的自主性,也为企业提供了更多定制化AI解决方案,推动了人工智能技术在各个领域的广泛应用。...而Assistants API的目标是简化这一复杂过程,让开发人员能够在短时间内构建出适应他们应用程序需求的定制助手。 目前,Assistants API处于测试阶段,已经向所有开发者开放使用。...总体而言,OpenAI的这些新发布为Java程序员提供了丰富的机会,从个性化应用到高性能AI服务,再到构建多样化的AI解决方案,都是可以抓住的利润点。

    29430

    经历了源码的痛苦,掌握DRF的核心序列化器

    目录 DRF的核心--序列化器 序列化器 什么是序列化和反序列化?...ModelSerializer模型类序列化器 字段参数 DRF的核心--序列化器 上一篇介绍了很多有关视图类以及DRF中的APIView执行流程、Request对象的源码分析,源码都get了;...DRF的核心当然不是知道视图类执行流程就可以了,DRF框架的核心那就是 序列化器的使用,如何使用序列化器实现 序列化、 反序列化,以及视图,这篇会介绍到~ 序列化器 什么是序列化和反序列化?..., views.BookView.as_view()), path('books/', views.BookDetailView.as_view()), ] 为什么不重写就会抛异常...) return self.instance ''' 发现如果我们传了instance不是空的,那么就是修改(update),不传就是新增(create),调用save,父类不然就抛异常

    98310

    DRF系列总结一:DRF是啥?为啥子要用?

    Some reasons you might want to use REST framework: The Web browsable API is a huge usability win for...上面同样是官网的介绍,我稍微翻译一下: 提供了可视化的API调试界面,开发者可以在线测试接口 提供了各种开箱即用的API认证授权工具,如OAuth2 提供了orm数据序和非orm数据的序列化支持 支持函数视图...API,并且可以通过这个页面测试这些API 你不用自己写一套接口鉴权代码了 你不用自己写大量的CRUD接口了,简单配置即可 你不用自己写大量的条件查询接口了,简单配置即可 你不用自己写后台分页逻辑了,简单配置即可...、Permissions负责权限校验、Routers负责路由自动注册、通过重写框架定义的函数,还可以统一接口返回格式及异常处理等。...接下来,我不打算直接介绍DRF的知识点,而是从“安装DRF”开始,在蓝鲸应用开发框架的基础上,一步一步地配置好“DRF脚手架”,并在脚手架的基础上,一点点地总结工作中使用DRF的技巧,希望能帮助到一些蓝鲸应用开发同学们

    10.1K114

    APIview的请求生命周期源码分析

    #这里是可以看出解析器在api_settings配置里配置 authentication_classes = api_settings.DEFAULT_AUTHENTICATION_CLASSES...self.response = self.finalize_response(request, response, *args, **kwargs) return self.response 从源码可以看出当请求进入三大认证时就已经引入了异常捕获的范围...为了自定义服务器异常时系统所抛的异常的内容,我们需要重写异常处理函数,步骤: 1.在settings的drf配置中配置EXCEPTION_HANDLER,指向自定义的exception_handler...函数 2.drf出现异常会回调exception_handler函数,携带异常对象和异常相关信息,在exception_handler函数中完成异常信息的返回以及异常信息的logging日志。...drf处理客户端异常,如果结果response为None代表服务器异常,自己处理 # 最终一定要在日志文件中记录异常现象 def exception_handler(exc, context):

    98620

    【愚公系列】2022年04月 Python教学课程 62-DRF框架介绍

    文章目录 一、DRF简介 二、DRF的特点 三、DRF增删改查 一、DRF简介 Django REST framework框架是一个用于构建WebAPl的强大而又灵活的工具。...通常简称为DRF框架或REST framework。 DRF框架是建立在Django框架基础之上,由Tom Christie大牛二次开发的开源项目。...的特点 DRF又如下特点: 提供了定义序列化器Serializer的方法,可以快速根据DjangoORM或者其它库自动序列化/反序列化。...丰富的定制层级:函数视图、类视图、视图集合到自动生成API,满足各种需要。 多种身份认证和权限认证方式的支持。 内置了限流系统。 直观的APIweb界面。 可扩展性,插件丰富....三、DRF增删改查 在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的。

    63920

    Django REST Framework

    REST 前后端分离 API-ApplicationProgrammingInterface 为了应付千变万化的前端需求 REST:RepresataionsStateTrans 20000 Fieding...构造方法 Serializer(instance=None, data=empty, **kwarg) 反序列化 验证 is_valid: 验证数据是否合法,返回boolean 在使用从外部传入的数据之前...,必须使用此函数进行验证 如果验证失败,返回数据错误异常 validated_data: 经过验证后的数据,存入此结构 视图 DRF的视图从处理任务,处理流程等跟Django基本一致 此视图基本是django...属性 请求数据体,类似于Django的request.POST, request.FILES 在DRF中主要指的是Json query_params 所有传入的关键字 api.tulingxueyuan.com...的访问提供了一些方便HTTP-Method + 名词默认对HttpMethod常用方法提供了支持案例: views - StudentAPIView API调试工具 chrome - postman

    2.6K63

    Django(62)自定义认证类「建议收藏」

    前言 如果我们不用使用drf那套认证规则,我们想自定义认证类,那么我们首先要知道,drf本身是如何定义认证规则的,也就是要查看它的源码是如何写的 源码分析 源码的入口在APIView.py文件下的dispatch..." def authenticate(self, request): """ 认证请求返回一个二元组(user, token),并且此方法必须重写,否则抛出异常...BasicAuthentication(BaseAuthentication): """ 针对用户名密码的 HTTP 基本身份验证 """ www_authenticate_realm = 'api...rest_framework.authentication import BaseAuthentication from rest_framework.exceptions import AuthenticationFailed from api.models...get ok" } 接着我们在请求头中只传auth 访问视图会抛出异常信息 { "detail": "认证信息有误,非法用户" } 然后我们在请求头中传入错误的认证,auth 111

    69220
    领券