DRF的版本
版本控制是作什么用的,咱们为何要用
首先要知道版本是干吗用的,咱们知道开发项目的时候有多个版本
当项目一直更新,版本就愈来愈多,之前的旧版本就不维护了
那这时,就须要对版本进行控制,这个DRF也给咱们提供了一些封装好的版本控制方法
版本控制怎么用
以前视图篇介绍了APIView,也只带APIView返回View中的view函数而后调用的dispach方法
那看一下dispatch方法,看下它都作了些什么
执行self.initial方法以前是各类赋值,包括request的从新封装,下面是路由分发,那咱们看这个方法辽作了什么。
能够看到,version版本信息赋值给了request.version 版本控制方案赋值给了request.versioning_scheme
这个版本控制方案就是配置的版本控制的类
也就是说,APIView经过这个方法初始化本身提供的组件
接下来看一下框架提供了那些版本的控制方法 ---- 在rest_framework.versioning
框架一共给咱们提供了这几个版本的控制方法,这里只给出一个,其余配置相同
详细用法
第一步 settings.py
第二步 urls.py
|
urlpatterns = [ url(r"^versions", MyView.as_view()), url(r"^(?P<version>[v1|v2]+)/test01", TestView.as_view()), ]
|
测试视图
|
class TestView(APIView): def get(self, request, *args, **kwargs): print(request.versioning_scheme) ret = request.version if ret == "v1": return Response("版本v1的信息") elif ret == "v2": return Response("版本v2的信息") else: return Response("根本就匹配不到这个路由")
|
其余版本控制的类,配置方法差很少都同样服务器
DRF的认证
认证是干什么用的
咱们都知道,咱们能够在网站上登陆,而后能够有我的中心,对本身信息进行修改
可是咱们每次给服务器发请求,因为Http的无状态,致使咱们每次都是新的请求
那么服务端须要对每次来的请求进行认证,看用户是否登陆,以及登陆用户是谁
那么咱们服务器对每一个请求进行认证的时候,不可能在每一个视图函数中都写认证
必定是把认证逻辑抽离出来,之前咱们可能会加装饰器,或者中间件,来看看DRF框架提供了什么
认证怎么用
上面版本控制的时候咱们能够知道,在dispatch 方法里,执行了initial方法,那初始化了咱们的版本
若是认证读的话,能够看到,版本的下面就是咱们的认证,权限,频率组件。
认证组件restful
咱们进去认证看框架
咱们这个权限组件返回的是request.user,那么咱们这里的request是新的仍是旧的呢
咱们的initial是咱们request从新赋值以后的,所因此这里的request是新的,也就是Request类实例对象
那这个user必定是一个静态方法,进去一探究竟
这里没有给出反复的跳转截图,自行仔细跳转
经过上面基本能够知道,咱们的认证类必定要实现的方法,以及返回值类型,
以及配置的参数authentication_classes
请看具体用法ide
认证的详细用法
写一个认证demo,先建一张用户表,字段为为用户名以及对应的token值函数
models.py
views.py
认证开始
写一个认证的类
视图级别认证
|
class TestAuthView(APIView): authentication_classes = [MyAuth, ]
def get(self, request, *args, **kwargs): return Response("测试认证")
|
全局配置认证