随笔分类 - Django Rest Framework
摘要:Django使用Python内建的logging模块打印日志,配置由四个部分组成 记录器:Logger 处理程序:Handler 过滤器:Filter 格式化:formatter 记录器-Logger Logger为日志系统的入口,每个logger命名都是bucket,可以向bucket写入需要处理
阅读全文
摘要:Django Rest Framework提供了corsheaders模块解决跨域问题 安装模块 pip3.9 install django-cors-headers 注册应用 # 注册 corsheaders 模块 INSTALLED_APPS = [ ... 'corsheaders', ] 配
阅读全文
摘要:版本控制 版本控制是前后端分离开发一个非常重要的内容,比如说我们重要服务修改、升级等发生版本变化v1、v2、v3等,但是版本发生了变化比如 v1升级到了v2版本,v1版本还有业务在继续使用,相当于同时多个版本接口共存使用 DRF版本控制配置 DRF中的版本控制默认是不开启的,request.vers
阅读全文
摘要:分页Pagination 当我们在PC 或者 App 有大量数据需要展示时,可以对数据进行分页展示。这时就用到了分页功能,分页使得数据更好的展示给用户 比如我们有1W+数据要返回给前端,数据量大一次性返回可能会比较慢,前端一次性展示1W+数据也会比较慢,用分页返回数据效果较好 前端分页和后端分页的区
阅读全文
摘要:DRF的过滤类 drf过滤器在filters模块中,主要有四个类 BaseFilterBackend:过滤基类,留好占位方法待后续继承 SearchFilter:继承BaseFilterBackend OrderingFilter:继承BaseFilterBackend DjangoObjectPe
阅读全文
摘要:什么是限流? 限流类似于权限机制,它也决定是否接受当前请求,用于控制客户端在某段时间内允许向API发出请求的次数,也就是频率 假设有客户端(比如爬虫程序)短时间发起大量请求,超过了服务器能够处理的能力,将会影响其他用户的正常使用 为了保证服务的稳定性,并防止接口受到恶意用户的攻击,我们可以对接口进行
阅读全文
摘要:DRF原有缓存 Django缓存、配置:https://www.cnblogs.com/Mickey-7/p/15792083.html Django为基于类的视图提供了一个 method_decorator 装饰器,用于为类视图添加缓存类别的装饰器, cache_page 和 vary_on_co
阅读全文
摘要:drf的权限类位于permission模块 如何确定权限 认证、限流,权限决定是否应该接收请求或拒绝访问 权限检查在视图的最开始处执行,在继续执行其他代码前 权限检查通常会使用request.user和request.auth属性中的身份认证信息来决定是否允许请求 不同级别的用户访问不同的api过程
阅读全文
摘要:JSON Web Token认证介绍 简称JWT认证,一般用于用户认证 JWT是一种相当新的标准,可用于基于token的身份验证 与内置的TokenAuthentication方案不同,JWT不需要使用数据库来验证令牌 优势:相较于传统的token,无需再服务端保存 基于传统token简单的实现认证
阅读全文
摘要:SessionAuthentication认证介绍 SessionAuthentication使用了Django默认的会话后端 适合AJAX客户端等运行在同样会话上下文环境中的模式 是DRF默认的认证方式之一 SessionAuthentication认证属性 #认证成功 SessionAuthen
阅读全文
摘要:TokenAuthentication认证介绍 TokenAuthentication是一种简单的基于令牌的HTTP认证 适用于CS架构,例如普通的桌面应用程序或移动客户端 TokenAuthentication认证使用 # 将rest_framework.authtoken 添加到 INSTALL
阅读全文
摘要:BasicAuthentication认证介绍 BasicAuthentication使用HTTP基本的认证机制 通过用户名/密码的方式验证,通常用于测试工作,尽量不要线上使用 用户名和密码必须在HTTP报文头部,为 Authorization 属性提供值为 Basic amFjazpmZWl4dW
阅读全文
摘要:认证 身份验证是将传入的请求与一组鉴别凭据关联的机制,然后使用权限和限流策略来确定是否允许请求进入 再权限和限流检查发生之前,以及在执行其他代码之前,实在在视图的最开始处运行身份验证 也就是说认证过程优先级最高,最先被执行 request.user属性通常设置为contrib.auth包的user类
阅读全文
摘要:关系字段用于表示模型之间的关联 Django中存在ForeignKey、MantToManyField和OneToOneField三种正向关系,以及反向关联和自定义关联 当继承 ModelSerializer 类的时候,包括关系型字段在内的所有字段会自动生成 StringRelatedField 使
阅读全文
摘要:drf在Django字段类型的基础上派生了自己的字段类型以及字段参数 序列化器的字段类型用于处理原始值和内部数据类型直接的转换 还可以用于验证输入、以及父对象检索和设置值 通用字段参数 read_only 该参数默认为false,设置为True的话则将字段变为只读 被设置成只读的字段可以包含在api
阅读全文
摘要:ListSerializer继承了BaseSerializer 一般情况下我们不直接使用ListSerializer ListSerializer会自动调用,序列化many=True的字段时,会自动调用ListSerializer # baseSerializer中的调用实现逻辑 def __new
阅读全文
摘要:HyperLinkedModelSerializer继承ModelSerializer,只是自动多出了一个url字段,其他都是一样的 不同之处在于使用超链接来表示关联关系而不是主键 默认情况下HyperLinkedModelSerializer序列化器包含一个url字段 url字段使用Hyperli
阅读全文
摘要:ModelSerializer特点 根据Model模型的定义,自动生成字段 自动生成相应的验证器 实现create和update 自动默认将关系字段映射成PrimaryKeyRelatedField主键关系字段 ModelSerializer指定序列化字段三种方法 class CategorySer
阅读全文
摘要:很多时候我们的模型设计并不只是单一的字段数据,还有多对多、1对多、关联等 序列化与单一的字段数据有所不同 模型类 ''' 如下三个模型类 Text分别与auth和category外键关联和多对多关联 ''' # 作者 class Auth(models.Model): username = mode
阅读全文
摘要:反序列化过程中 如果使用is_valid 验证字段通过,我们会获得一个validated_data数据字典 如果验证不通过,会获得一个errors数据字典,is_valid参数如果raise_exception设为True,会弹出ValidationError错误 除了DRF本身的验证,有时候我可以
阅读全文
