首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

3.通过反射的方法执行通过认证的自定义请求get、post、patch、delete等 4.如果上面2、3步执行过程中有异常,就调用handle_exception方法处理捕获到的异常。...) } 重写异常处理函数 为了自定义服务器异常时系统所抛的异常的内容,我们需要重写异常处理函数,步骤: 1.在settings的drf配置中配置EXCEPTION_HANDLER,指向自定义的...exception_handler函数 2.drf出现异常会回调exception_handler函数,携带异常对象和异常相关信息,在exception_handler函数中完成异常信息的返回以及异常信息的...'api.exception_handler.exception_handler'} 在exception_handler文件中重写exception_handler # 一定要在settings文件中将异常模块配置自己的异常处理函数...import Response # 先交个drf处理客户端异常,如果结果response为None代表服务器异常,自己处理 # 最终一定要在日志文件中记录异常现象 def exception_handler

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

【愚公系列】2022年04月 Python教学课程 77-DRF框架之异常

文章目录 一、DRF框架自带异常 二、自定义异常 一、DRF框架自带异常 REST 框架的视图处理各种异常,并处理返回适当的错误响应。 处理的异常包括: 在 REST 框架中定义的异常。...二、自定义异常 您可以通过创建一个处理程序函数来实现自定义异常处理,该函数将 API 视图中引发的异常换为响应对象。这允许您控制 API 使用的错误响应样式。...该函数必须采用一对参数,第一个是要处理的异常,第二个是包含任何额外上下文(当前正在处理的视图)的字典。异常处理程序函数应返回对象,如果无法处理异常,则应返回。...if response is not None: response.data['status_code'] = response.status_code return response...上下文参数不由默认处理程序使用,但如果异常处理程序需要更多信息(当前正在处理的视图),则可以使用上下文参数,该视图可作为 访问。

1K40

重点内容回顾-DRF

c.SET_NULL设置为 NULL,代表的是主表删除数据的时候,将外键关联的表数据设置为NULL。仅仅在该字段null=True,允许为null时可用。...Response类的对象:传入原始的响应数据,会自动根据客户的请求头中 Accept将响应数据转换为对应的格式进行返回,默认是json,仅支持json和html 3.异常处理:如果视图中抛出了未处理异常...,DRF框架会自动对异常进行处理,并且会把处理之后的错误信息返回给客户端。...page=&page_size= 视图关闭分页pagination_class = None 6.2异常处理 可以设置DRF框架的默认异常处理,也可以自定义异常处理函数。..., context) if response is None: view = context['view'] # 补充数据库的异常处理 if isinstance

2.4K20

DRF框架学习(四)

注意:如果在视图内关闭分页功能,只需在视图内设置 pagination_class = None 9.2自定义分页类 也可通过自定义Pagination类,来为视图添加不同分页行为。...注意:视图关闭分页 pagination_class = None 10.异常处理(重点) REST framework提供了异常处理,可以出来以下异常: APIException 所有异常的父类 ParseError...10.2自定义异常处理 10.2.1自定义DRF框架异常处理函数 1.自定义异常处理函数 2.设置EXCEPTION_HANDLER配置项 10.2.2详解 可以在DRF框架异常处理函数的基础上,补充一些其他的异常处理...框架的默认异常处理函数 response = drf_exception_handler(exc, context) if response is None: view...Response({'detail': '服务器内部错误'}, status=status.HTTP_507_INSUFFICIENT_STORAGE) return response 在配置文件中声明自定义异常处理

2.7K40

drf-jwt认证组件、权限组件、频率组件的使用

目录 drf-jwt认证组件、权限组件、频率组件的使用 认证组件 权限组件 频率组件 drf-jwt签发token源码分析 自定义签发token实现多方式登录 源码分析 多方式登陆签发token实例...频率组件 自定义频率类 drf-jwt认证组件、权限组件、频率组件的使用 三大认证流程图: ?...(user, token),代表合法用户 """ pass#这里的pass相当于return None ''' 自定义认证类的步骤: # 自定义认证类 # 1) 如果使用...from rest_framework.permissions import BasePermission """如果有特殊需要,需要自定义权限类 :只有superuser有权限、只有vip...# 抛用户已存在异常是多余的,所以自定义系统校验规则即可 username = serializers.CharField(min_length=3, max_length=16)

2.3K20

不会DRF?源码都分析透了确定不来看?

接口开发,最核心最常见的一个过程就是序列化,所谓序列化就是把数据转换格式,序列化可以分两个阶段: 序列化:把我们语言识别的数据转换成指定的格式提交给别人(前端) 比如python中的字典,列表,对象等json...return self.dispatch(request, *args, **kwargs) ··· return view # @classonlymethod通过描述符自定义装饰器..._allowed_methods()) getattr(obj,pro,None):按pro判断是否有无obj.pro属性,没有返回NoneNone可以自定制 反射忘记的可以看俺的这篇博客:python..., authenticators=None,negotiator=None, parser_context=None): ··· # 初始化,将传入的老的request放入新的_request...request.POST: request.data = request.POST else: # 将request.body从json对象转换为字典

1.3K10

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

目录 DRF的核心--序列化器 序列化器 什么是序列化和反序列化?...的核心--序列化器 上一篇介绍了很多有关视图类以及DRF中的APIView执行流程、Request对象的源码分析,源码都get了; DRF的核心当然不是知道视图类执行流程就可以了,DRF框架的核心那就是...(format=’hex_verbose’) format: 1) 'hex_verbose' "5ce0e9a5-5ffa-654b-cee0-1238041fb31a" 2) 'hex' "5ce0e9a55ffa654bcee01238041fb31a..." 3)'int' - : "123456789012312313134124512351145145114" 4)'urn' : "urn:uuid:5ce0e9a5-5ffa-654b-cee0...write_only 表明该字段仅用于反序列化输入,默认False required 表明该字段在反序列化时必须输入,默认True default 反序列化时使用的默认值 allow_null

78610

Python进阶40-drf框架(二)

---- 为啥要定义异常模块 """ 1)所有经过drf的APIView视图类产生的异常,都可以提供异常处理方案 2)drf默认提供了异常处理方案(rest_framework.views.exception_handler...),但是处理范围有限 3)drf提供的处理方案两种,处理了返回异常现象,没处理返回None(后续就是服务器抛异常给前台) 4)自定义异常的目的就是解决drf没有处理的异常,让前台得到合理的异常信息返回,...(返回值)response,有值代表drf已经处理了,None代表需要自己处理 # 自定义异常处理文件exception,在文件中书写exception_handler函数 from rest_framework.views...None: 通过context,exc记录详细的异常信息 自己自定义响应对象 return Response({ 'detail...response = drf_exception_handler(exc, context) # 为空,自定义二次处理 if response is None: # print

1.9K20

分享近百道JavaScript 基础面试题,帮助你巩固JavaScript 基础知识

3、null和undefined有什么区别? null 表示有意不存在任何对象值,而 undefined 表示不存在值或未初始化的变量。 4. 如何在 JavaScript 中声明变量?...如何在 JavaScript 中将字符串转换为小写? 你可以使用 toLowerCase() 方法将字符串转换为小写。 34. JavaScript 中的闭包是什么,为什么有用?...toUpperCase() 方法将字符串转换为大写字母。 56. 如何在 JavaScript 中将字符串转换为整数?...如何在 JavaScript 中将对象转换为 JSON 字符串? 可以使用 JSON.stringify() 方法将对象转换为 JSON 字符串。 67.解释JavaScript中事件传播的概念。...如何在 JavaScript 中将字符串转换为日期对象? 可以使用 Date() 构造函数或 new Date() 方法将字符串转换为日期对象。 72.

18010

DRF框架学习(二)

2.明确RestAPI接口实现时的主要工作 2.1序列化&反序列化 把程序中的数据结构类型转换为其他格式的数据,这个过程叫做序列化的过程 例:将模型类对象转换为字典或者json数据的过程,就叫做序列化的过程...default 我们在使用序列化和反序列化时使用的默认值 allow_null 表明该字段是否允许传入None,默认False help_text、label_text 可以理解为注释,在web直观显示的时候有一个显示信息...Serializer的构造方法为: Serializer(instance=None, data=empty, **kwarg) 说明: 1)用于序列化时,将模型类对象传入instance参数 2)用于反序列化时...,将要被反序列化的数据传入data参数 3)除了instance和data参数外,在构造Serializer对象时,还可通过context参数额外添加数据, serializer = AccountSerializer...对字段进行验证, def validate_btitle(self,value): if 'django' not in value.lower(): raise

4.1K30

DRF框架学习(三)

2.响应时可以统一返回Response类的对象 3.异常处理:如果视图中抛出了未处理异常DRF框架会自动对异常进行处理,并且会把处理之后的错误信息返回给客户端。...例如 Http404这个系统处理过的处理异常的方法,我们直接将它抛出,客户端就可以收到处理之后的错误信息,不会是404页面,而是错误信息,“未找到“。...Response类的对象: 1.传入原始相应数据(比如一个字典),Response会自动根据客户端请求头中 Accept将相应数据转换为对应的格式进行返回。默认是json格式。...# 自定义一个GenericAPIView class MyGenericAPIView(APIView): queryset = None serializer_class = None...1.3.1扩展类5个详解 DRF框架提供了5个扩展类,封装了通用增删改查的流程。

1.1K20

Django+Vue开发生鲜电商平台之7.用户登录和注册功能

一、DRF的token基本使用 1.DRF的token登录原理 基于DRF的前后端分离登录与单独使用Django登录的原理不同,不再需要CSRF验证,DRF提供了许多开箱即用的身份验证方案,并且还允许实现自定义方案...2.viewsets设置认证类 在使用token认证时,如果token不正确,则会抛出异常,并且如果对于本来不需要认证即可访问的公开数据要是再需要正确的token才能访问的话,就会降低项目的友好性,此时可以对...class CustomBackend(ModelBackend): '''自定义用户验证''' def authenticate(self, request, username=None...'mobile': mobile, 'text': '【Python进化讲堂】欢迎您注册Fresh_Ecommerce ,验证码:{}(5分钟内有效,非本人操作...2.DRF实现发送短信验证码接口 需要在DRF中接入短信验证码发送。

4.2K20

教你 10 分钟构建一套 RESTful API 服务( Django篇 )

',     'rest_framework',     'django_filters',     'restfulapi',     'rest_framework_swagger', ] # drf...映射迁移 python3 manage.py migrate 第 2 步,序列化模型 使用 djangorestframework 提供的序列化器 ModelSerializer,将上面定义好的模型转换为其他数据格式..."     自定义Response,继承rest framework的Response     """     def __init__(self, data=None, code=None, msg...=None,                  status=None,                  template_name=None, headers=None,                  ...:针对不存在的资源请求,不同的错误状态码,返回不同的数据 需要注意的是, settings.py 文件指定的异常处理类和该异常处理类的路径要保持一致 # 异常处理 def custom_exception_handler

5K10

DRF框架中的英文单词

后端我们在设计模型类时自定义表名的时候用到了。 15. verbose/vɝ'bos/冗长的;啰嗦的,我们使用verbose_name指明一个易于理解和表述的对象名称。...False write_only 表明该字段仅用于反序列化输入,默认False required 表明该字段在反序列化时必须输入,默认True default 序列化和反序列化时使用的默认值 allow_null...表明该字段是否允许传入None,默认False validators 该字段使用的验证器 error_messages 包含错误编号与错误信息的字典 label 用于HTML展示API页面时,显示的字段名称...help_text 用于HTML展示API页面时,显示的字段帮助提示信息 24. instance/'ɪnstəns/实例,我们下面的这种情况下用到了: Serializer(instance=None...Exceptions/ɪk'sɛpʃən/异常处理,我们DRF框架中的高级功能之一。

1.7K30

drf框架中认证与权限工作原理及设置

0909自我总结 drf框架中认证与权限工作原理及设置 一.概述 1.认证 工作原理 返回None => 游客 返回user,auth => 登录用户 抛出异常 => 非法用户 前台对于用户信息进行的判断...直接定义为游客 2)如果前台携带了认证信息并认证通过,定位为登录用户,将登录的用户user对象保存在 requset.user 中 3)如果前台携带了认证信息但没有认证通过,一般都定义为游客 4 ) 可以自定义为非法用户...,抛出 认证失败 异常,但是不建议直接操作,可以交给权限组件进一步处理rest_framework.exceptions 的 AuthenticationFailed 参数 BasicAuthentication...request.user.is_authenticated IsAdminUser:是否是后台用户 校验 request.user和request.user.is_staff is_staff(可以登录后台管理系统的用户) 二.局部设置 即在我们自定义的视图类开头设置...SessionAuthentication # 权限 # 局部取消权限组件:permission_classes = [] # 区别启用权限组件:permission_classes = [权限类们] # 填写的参数AllowAny

1.3K41
领券