DRF的版本
版本控制是做什么用的,我们为什么要用
首先要知道版本是干嘛用的,我们知道开发项目的时候有多个版本
当项目一直更新,版本就越来越多,以前的旧版本就不维护了
那这时,就需要对版本进行控制,这个DRF也给我们提供了一些封装好的版本控制方法
版本控制怎么用
之前视图篇介绍了APIView,也只带APIView返回View中的view函数然后调用的dispach方法
那看一下dispatch方法,看下它都做了些什么
执行self.initial方法之前是各种赋值,包括request的重新封装,下面是路由分发,那我们看这个方法辽做了什么。
可以看到,version版本信息赋值给了request.version 版本控制方案赋值给了request.versioning_scheme
这个版本控制方案就是配置的版本控制的类
也就是说,APIView通过这个方法初始化自己提供的组件
接下来看一下框架提供了那些版本的控制方法 ---- 在rest_framework.versioning
框架一共给我们提供了这几个版本的控制方法,这里只给出一个,其他配置相同
详细用法
第一步 settings.py
1 | REST_FRAMEWORK = { |
第二步 urls.py
1 | urlpatterns = [ |
测试视图
1 | class TestView(APIView): |
其他版本控制的类,配置方法差不多都一样
DRF的认证
认证是干什么用的
我们都知道,我们可以在网站上登录,然后可以有个人中心,对自己信息进行修改
但是我们每次给服务器发请求,由于Http的无状态,导致我们每次都是新的请求
那么服务端需要对每次来的请求进行认证,看用户是否登录,以及登录用户是谁
那么我们服务器对每个请求进行认证的时候,不可能在每个视图函数中都写认证
一定是把认证逻辑抽离出来,以前我们可能会加装饰器,或者中间件,来看看DRF框架提供了什么
认证怎么用
上面版本控制的时候我们可以知道,在dispatch 方法里,执行了initial方法,那初始化了我们的版本
如果认证读的话,可以看到,版本的下面就是我们的认证,权限,频率组件。
认证组件
我们进去认证看
我们这个权限组件返回的是request.user,那么我们这里的request是新的还是旧的呢
我们的initial是我们request重新赋值之后的,所所以这里的request是新的,也就是Request类实例对象
那这个user一定是一个静态方法,进去一探究竟
这里没有给出反复的跳转截图,自行仔细跳转
通过上面基本可以知道,我们的认证类一定要实现的方法,以及返回值类型,
以及配置的参数authentication_classes
请看具体用法
认证的详细用法
写一个认证demo,先建一张用户表,字段为为用户名以及对应的token值
models.py
1 | # 先在model中注册模型类 |
views.py
1 | # 写视图类并且用post请求注册一个用户 |
认证开始
写一个认证的类
1 | # 注意我们这个认证的类必须实现的方法以及返回值 |
视图级别认证
1 | class TestAuthView(APIView): |
全局配置认证
1 | REST_FRAMEWORK = { |