rest_framework 源码分析 -----认证组件

rest_framework 源码分析

今天我们来分析一下rest_framework的认证组件源码

  1. python的django也有认证组件 但是呢rest_framework也是有认证组件的 并且比django还方便(个人见解)
  2. 下面我来带大家分析一下认证组件的源码

首先我们再使用认证租金的时候需要先导入认证组件的模块

from rest_framework.authentication import BaseAuthentication  # 这个是限制用户的信息 就是你验证的时候必须要写它里面的方法不然它的方法是返回错误的  所以你 必须要重写 它的方法
from rest_framework.exceptions import AuthenticationFailed  # 这个是你的用户认证出错的时候返回额错误信息 和上面的BaseAuthentication 是一起匹配的

你的下面的定义的类再使用的时候就继承这个BaseAuthentication的时候必须要重写它内部的方法,因为如图所示它内部的方法有两个一个是有用的 一个鸟用没有
这里写图片描述

第一个方法你看了必须要重写 不然就会抛出一个错误 所以 必须在你继承的时候重写这个方法

源码剖析

然后你再定义的类继承这个模块的时候你的返回的时候是必须要使用这个类名 (authenticate)然后返回的也是规定好的 是一个两个参数的元组

所以它的做用就是限制 限制你的方法必须这样类写 然后返回的也必须是这样

  • 你的类型这样来用是因为编译的时候会自动寻找到这个方法名来进行判断 然后你返回的元组也会由对应的参数来进行取值

  • 你返回的是一个带有两个参数的元组

    • 第一个参数的取值是request.user
    • 第二个参数的取值是request.auth
  • 然后我们在界面中进行认证的使用的时候必须要 在你使用的类中写 authentication_classes = [“你的认证类”] 如果你的类要使用认证组件就必须先写authentication_classes = []这个是源码执行的时候会先找这个

ps 你认证的时候如果是前后端分离的项目 最好是定的 随机字符串来充当cookie这样有助于取值,如果是用cooike获取session你的逻辑就会很麻烦 所以就尽量使用随机字符串来定义你的验证信息

源码执行的流程

  • 1 、所有的源码都是先走APIView中的内容 然后走 dispath方法

在这里插入图片描述

  • 2、再执行

  • 在这里插入图片描述

  • 3、下面就是去你的类中去找authencation_classes这个列表 这就是为什么要在你的需要认证的类中写这个列表 并且把你的类中的这个列表给找到进行验证

  • 在这里插入图片描述

在这里插入图片描述

*authencation_classes = [Authencation] 是你重写的BaseAuthentication 类就是你的认证必须要把认证流程写入这里

如果你的认证要放在全局的时候就可以把配置写在全局中就是你的authencation_classes 这个配置写在全局中就可以设置为所有的类使用了,就是全局配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Django REST Framework Cache是一个Django框架的扩展,用于缓存REST API的响应数据。它提供了一种简单的方式来缓存API视图的响应,以减少数据库查询和加快请求的响应速度。 使用Django REST Framework Cache,你可以通过在视图类或视图函数上添加装饰器来启用缓存。这个扩展支持多种缓存后端,包括内存缓存、数据库缓存和文件缓存等。你可以根据你的需求选择适合的缓存后端。 为了使用Django REST Framework Cache,你需要在你的Django项目中安装并配置它。你可以通过pip安装它: ``` pip install djangorestframework-cache ``` 安装完成后,在你的项目的settings.py文件中添加以下配置: ```python INSTALLED_APPS = [ ... 'rest_framework_cache', ] CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } } REST_FRAMEWORK_CACHE = { 'DEFAULT_CACHE_BACKEND': 'default', } ``` 然后,在你的API视图类或函数上使用`@cache_response`装饰器来启用缓存: ```python from rest_framework.decorators import api_view from rest_framework_cache.decorators import cache_response @api_view(['GET']) @cache_response(timeout=60*60*24) # 缓存一天 def my_view(request): ... ``` 这样,当该API被访问时,响应数据将会被缓存,并在下次请求相同的API时直接返回缓存的响应数据,而不需要执行相同的查询操作。 通过使用Django REST Framework Cache,你可以有效地提高REST API的性能和响应速度,并减少对数据库的负载。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lovely_red_scarf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值