目录 一.断点调试使用 二.认证,权限,频率源码分析(了解) 2.1 权限类的执行源码 2.2 认证源码分析 2.3 频率源码分析 2.4 自定义频率类(了解) 2.5 SimpleRateThrottle源码分析 三.基于APIView编写分页 四.全局异常处理 五.作业 一.断点调试使用 所谓断点调试就是程序以debug模式运行,可以在任意位置停下,查看停止位置变量的变化情况. 使用步骤 步骤一:打断点 步骤二:以debug模式运行代码 步骤三:这时候我们看pycharm下方的窗口,可以根据…
Django框架之drf 一.断点调式使用 ​ 指,在我们编写代码的时候,程序运行出现报错是无可避免的,当程序 出现报错时,我们需要找到出现报错的代码进行修改,如果时简短的代码很容易就可以找到报错位置,但是当代码编写的非常多的时候,报错位置就比较难找到,debug模式就是pycharm为我们提供的查找代码错误位置的功能 1.断点调试 ​ 断点调试,英文 breakpoint.用大白话来解释下,断点调试其实就是在debug模式下程序运行的过程中,你在代码某一处打上了断点,当程序跑到你设置的断点位置…
1.权限源码分析 1.APIView源码497行:self.initial(request, *args, **kwargs)中进行了三大认证. 2.在initial的源码中,以下三行代码是进行三大认证的代码: self.perform_authentication(request) self.check_permissions(request) self.check_throttles(request) # 按照顺序从上往下执行,先执行认证,再执行权限认证,最后执行频率认证.三大认证走不完视图…
1.首先 我们进入这个initial()里面看下他内部是怎么实现的. 2.我们进入里面看到他实现了3个方法,一个认证,权限频率 3.我们首先看下认证组件发生了什么 权限: 啥都没返回,self.permission 条件不执行了. 4.频率组件 小总结一下 继续: request.user: 这里我在实例化一个Request类,并且传值进去 回到这,我就是执行了我自己定义的TonkenAuth 回到 Request类 我们需要在页面上定义这个方法覆盖父类中的 # 在自己view视图中,继承aut…
实战-DRF快速写接口 开发环境 Python3.6 Pycharm专业版2021.2.3 Sqlite3 Django 2.2 djangorestframework3.13 测试工具 Postman 需求 注册接口,包含字段用户名,密码,确认密码,用户类型 登陆接口,校验用户名,密码,生成随机字符串 认证功能,除了注册登陆接口外,所有接口都要登陆后访问 频率限制功能,每分钟访问5次,book的所有接口,使用这个频率类 权限限制功能,publish的所有操作需要超级用户能访问,其他的普通登陆用…
Django框架之drf 目录 Django框架之drf 一.反序列化类校验部分源码解析 二.断言 三.drf之请求 1.Request能够解析的前端传入编码格式 2.Request类中的属性和方法 四.drf之响应 1.Response能够响应的编码格式 2.Response的源码属性或方法 五.视图组件介绍及两个视图基类 1.APIView与View区别 2.视图基类 六.基于APIView+ModelSerializer+Resposne写5个接口 1.视图类 2.序列化类 3.路由 4.…
前言: Django的rest_framework一共有三大组件,分别为认证组件:perform_authentication,权限组件:check_permissions,频率组件:check_throttles: 我在前面的博客中已经梳理了认证组件,不知道大家有没有看懂:在这里我把认证的组件的博客地址在贴出来,不清楚的人可以看下 局部设置认证组件的博客:https://www.cnblogs.com/bainianminguo/p/10480887.html 全局设置认证组件的博客:http…
cbv是基于类的视图 # 首先要在路由层配置: # 找到类绑定方法as_view # 点开dispatch的方法 # http_method_names其实就是方法的列表 整个流程: 1.写一个基于类的视图 2.然后在路由层配置,第二参数写as_view,加括号执行 3.由于父级中没有需要到view中找方法,as_view方法其实是一个闭包函数,返回的一个函数地址加括号执行 4.as_view中执行了dispatch方法,就是将视图类中的参数拿到,和列表中方法比较,如果有返回执行,没有就提示错误…
一.三大认证功能分析 1)APIView的 dispath(self, request, *args, **kwargs) 2)dispath方法内 self.initial(request, *args, **kwargs) 进入三大认证 # 认证组件:校验用户 - 游客.合法用户.非法用户 # 游客:代表校验通过,直接进入下一步校验(权限校验) # 合法用户:代表校验通过,将用户存储在request.user中,再进入下一步校验(权限校验) # 非法用户:代表校验失败,抛出异常,返回403权…