
Django
文章平均质量分 51
深入源码去聊django
python之行
这个作者很懒,什么都没留下…
展开
-
drf源码_认证
在开发API过程中,有些功能需要登录才能访问,有些无需登录。drf中的认证组件主要就是用来实现此功能。关于认证组件,我们用案例的形式,先来学习常见的用用场景,然后再来剖析源码。项目要开发100个接口,其中1个无需登录接口、98个必须登录才能访问的接口、1个公共接口(未登录时显示公共/已登录时显示个人信息)。原来的认证信息只能放在URL中传递,如果程序中支持放在很多地方,例如:URL中、请求头中等。认证组件中,如果是使用了多个认证类,会按照顺序逐一执行其中的方法。原创 2024-03-15 18:26:25 · 765 阅读 · 0 评论 -
drf源码_解析器
使用获取请求体中的数据。这个的数据怎么来的呢?其实在drf内部是由解析器,根据请求者传入的数据格式 + 请求头来进行处理。解析器源码1、drf 將解析器封装到 Request中2、將解析器传给 parsers 参数3、將选择解析器参数DefaultContentNegotiation 实例化对象传给 negotiator,DefaultContentNegotiation.select_parser 作用是根据request的请求头 和 列表中解析器的请求头匹配选择合适的解析器。原创 2024-03-16 14:58:40 · 180 阅读 · 0 评论 -
drf_自定义filter
filter主要的作用是根据用户动态传入的参数,来筛选从数据库查询的数据。原创 2024-03-18 16:02:04 · 790 阅读 · 0 评论 -
drf_访问周期和组件的配置
首先请求过来,最新访问django的中间件,首先访问各中间件的process_request,然后匹配视图函数,但是并不访问,匹配完之后,再访问各中间件的process_view函数,访问完之后,然后再走drf中的dispatch, 然后依次进行用户认证,权限认证 和限流认证,最后才访问视图函数。原创 2024-03-16 10:24:42 · 235 阅读 · 0 评论 -
drf源码_限流
限流,限制用户访问频率,例如:用户1分钟最多访问100次 或者 短信验证码一天每天可以发送50次, 防止盗刷。本质,每个限流的类中都有一个。原创 2024-03-16 11:19:11 · 319 阅读 · 0 评论 -
DRF序列化_创建
在和Serializer中都可以自定义字段,并传入一些相关参数。title = models.CharField(verbose_name="标题", max_length=32)order = models.IntegerField(verbose_name="顺序")name = models.CharField(verbose_name="姓名", max_length=32)原创 2024-03-16 15:28:08 · 218 阅读 · 0 评论 -
drf源码_序列化源码
在创建类的时候,类里面定义的 类属性 和 方法是要比 类先创造的,因为如果我们用type()这种方式创建类的时候,类属性和方法是要当作参数传给type的,所以 创建类的时候 类属性和方法是先有的,然后再创建类对于上述代码,在类创建之前,其内部字段会先进行实例化对象。而这些CharField在CharField等字段实例化时,内部会维护一个计数器,来表示实例化的先后顺序。原创 2024-03-18 15:03:00 · 719 阅读 · 0 评论 -
drf源码_数据检验
3、如果想校验和序列化 字段不一致,可以通过read_only 和 write_only控制。write_only为True时,这个字段提交时会校验,但是不会序列化返回,比如密码这种字段。read_only表示序列化字段,在提交时,如果有字段设置为True,那么这个字段可以不。1、如果对新增数据 校验过后,成功保存到数据库后,想要序列化返回,此时可以校验定义一个。2、校验可以跟序列化同时用一个序列化类,但是两者的字段是一致的。用提交,不用校验,知识序列化后显示,比如自增id。如果一个请求,即需要做。原创 2024-03-18 15:26:53 · 317 阅读 · 0 评论