摘要: 1. 源码分析 注意:以下代码片段为方便理解已进行简化,只保留了与序列化功能相关的代码 序列化的源码中涉及到了元类的概念,我在这里简单说明一下:元类(metaclass)是一个高级概念,用于定义类的创建行为。简单来说,元类是创建类的类,它决定了类的创建方式和行为。 在 Python 中一切皆为对象, 阅读全文
posted @ 2024-10-28 22:26 harry6 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 1. 解析器源码分析 注意:以下源码为了方便理解已进行简化,只保留了解析器相关的代码 # 视图函数: class MyView(APIView): def post(self, request): print(self.request.data) # 触发解析流程 return Response(" 阅读全文
posted @ 2024-10-27 20:25 harry6 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 1. 版本管理组件源码分析 注意点: 不同的versioning_class区别:实例化后得到的对象versioning_scheme里面的方法不同(函数同名,但是处理逻辑不同) def determine_version :获取版本信息 def reverse : 反向生成url; QueryPa 阅读全文
posted @ 2024-10-27 19:27 harry6 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 1. 限流组件源码分析 注意:以下源码为方便理解已进行简化,只保留了与限流组件相关的代码。注释前的数字代表执行顺序。 SimpleRateThrottle类的源码解析: 2. 实践:编写一个限流类 from rest_framework.throttling import SimpleRateThr 阅读全文
posted @ 2024-10-27 18:44 harry6 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 1. 权限组件源码分析 PS:下列源码为了方便理解都进行了简化,只保留了权限相关的代码 由于视图函数中继承了APIView,因此permission_classes可在视图类中进行重写。 注意点: 执行权限校验前,已执行了认证流程。因此此时可通过self.user获取用户对象(认证通过的情况) 2. 阅读全文
posted @ 2024-10-27 17:08 harry6 阅读(38) 评论(0) 推荐(0) 编辑
摘要: drf 认证组件 1、认证组件源码执行流程 在该图中,我把与认证组件无关的代码都删除了,只留下了认证的代码,方便解析。每行注释的开头数字即代表了执行顺序 注意事项: 第5步中的self.authenticators获取流程: 首先,明确self代表的是request对象。则self.authenti 阅读全文
posted @ 2024-10-27 16:00 harry6 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 作为一个工作3年左右的码农,在各种框架的摸爬滚打中,我也接触了不少前端后端的技术栈,其中DRF算是我后端日常工作中的用得最多的框架。今天就简单聊聊DRF请求的生命周期。由于篇幅原因,我在此篇文章中只是稍作解析,后续针对各部分会单独写文章来详细讲解相关源码的执行过程以及如何改编源码。 drf中请求的生 阅读全文
posted @ 2024-10-01 10:43 harry6 阅读(91) 评论(0) 推荐(0) 编辑