Django-Rest-Framework的版本和认证
Django-Rest-Framework的版本和认证
DRF的版本
版本控制是做什么用的,我们为什么要用
首先要知道版本是干嘛用的,我们知道开发项目的时候有多个版本
当项目一直更新,版本就越来越多,以前的旧版本就不维护了
那这时,就需要对版本进行控制,这个DRF也给我们提供了一些封装好的版本控制方法
版本控制怎么用
之前视图篇介绍了APIView,也只带APIView返回View中的view函数然后调用的dispach方法
那看一下dispatch方法,看下它都做了些什么

执行self.initial方法之前是各种赋值,包括request的重新封装,下面是路由分发,那我们看这个方法辽做了什么。

可以看到,version版本信息赋值给了request.version 版本控制方案赋值给了request.versioning_scheme
这个版本控制方案就是配置的版本控制的类
也就是说,APIView通过这个方法初始化自己提供的组件
接下来看一下框架提供了那些版本的控制方法 ---- 在rest_framework.versioning

框架一共给我们提供了这几个版本的控制方法,这里只给出一个,其他配置相同
详细用法
第一步 settings.py
|
|
REST_FRAMEWORK = {
|
第二步 urls.py
|
|
urlpatterns = [ |
测试视图
|
|
class TestView(APIView): |
其他版本控制的类,配置方法差不多都一样
DRF的认证
认证是干什么用的
我们都知道,我们可以在网站上登录,然后可以有个人中心,对自己信息进行修改
但是我们每次给服务器发请求,由于Http的无状态,导致我们每次都是新的请求
那么服务端需要对每次来的请求进行认证,看用户是否登录,以及登录用户是谁
那么我们服务器对每个请求进行认证的时候,不可能在每个视图函数中都写认证
一定是把认证逻辑抽离出来,以前我们可能会加装饰器,或者中间件,来看看DRF框架提供了什么
认证怎么用
上面版本控制的时候我们可以知道,在dispatch 方法里,执行了initial方法,那初始化了我们的版本
如果认证读的话,可以看到,版本的下面就是我们的认证,权限,频率组件。
认证组件

我们进去认证看

我们这个权限组件返回的是request.user,那么我们这里的request是新的还是旧的呢
我们的initial是我们request重新赋值之后的,所所以这里的request是新的,也就是Request类实例对象
那这个user一定是一个静态方法,进去一探究竟


这里没有给出反复的跳转截图,自行仔细跳转
通过上面基本可以知道,我们的认证类一定要实现的方法,以及返回值类型,
以及配置的参数authentication_classes
请看具体用法
认证的详细用法
写一个认证demo,先建一张用户表,字段为为用户名以及对应的token值
models.py
|
|
# 先在model中注册模型类 |
views.py
|
|
# 写视图类并且用post请求注册一个用户 class UserView(APIView): |
认证开始
写一个认证的类
|
|
# 注意我们这个认证的类必须实现的方法以及返回值 |
视图级别认证
|
|
class TestAuthView(APIView): |
全局配置认证
|
|
REST_FRAMEWORK = {
|
Django-Rest-Framework的版本和认证的更多相关文章
- Django Rest framework 之 版本
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...
- Django rest framework(1)----认证
目录 Django组件库之(一) APIView源码 Django restframework (1) ----认证 Django rest framework(2)----权限 Django ...
- Django rest framework 之版本
一.通过 QueryParameterVersioning 获取版本 通过 QueryParameterVersioning 从 get 请求中获取版本信息: 1.新建 app,名为 api,Proj ...
- Django REST framework之版本,解释器,序列化
1 版本 2 解释器 3.序列化 1 版本 通过?后面传版本号有两种方法: 方法一 from django.shortcuts import render from rest_framework.vi ...
- Django rest framework源码分析(4)----版本
版本 新建一个工程Myproject和一个app名为api (1)api/models.py from django.db import models class UserInfo(models.Mo ...
- Django rest framework源码分析(1)----认证
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...
- Django Rest framework 之 认证
django rest framework 官网 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest fra ...
- Django REST framework 之JWT认证
Json Web Token 1.JWT简介 JWT 是一个开放标准(RFC 7519),它定义了一种用于简洁,自包含的用于通信双方之间以 JSON 对象的形式安全传递信息的方法.JWT 可以使用 H ...
- Django rest framework(7)----分页
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...
- Django rest framework(6)----序列化
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...
随机推荐
- 8--json交互
8.1 为什么要进行json数据交互 json数据格式在接口调用.html页面中较常用,json格式较简单,解析较方便. 比如:webservice接口,传输json数据. 8.2 spri ...
- matlab的代码注释
1.注释一块代码: %{ 此处代码块 %} 2.注释数行代码: 先选中,然后用组合键Ctrl+R 取消注释,用组合键Ctrl+T 3.双%%的作用:代码分块运行,点击双%%之间的代码,再点Run Se ...
- 一次php脚本出现段错误(Segment fault)的经历
今天在一台新服务器上cli运行一个php脚本,出现了Segment fault错误,第一感觉应该是某个扩展安装有问题 这段php代码是调用soap接口,查看soap扩展没啥问题,一时不知道是啥原因. ...
- rand()与srand()
1.不用srand()的话 两次运行程序产生的随机数序列相同 2.用srand() 两次运行程序产生的随机数则不同 示例程序: #include<iostream> #include< ...
- numpy中的tile函数
tile()函数可以很方便的生成多维数组.它有两个参数,第一个数是原始数组;第二个表示如何来生成,第一个数字表示生成几行,第二个表示每行有多少个原始数组(如果只写一个数字,那么就默认是一行). fro ...
- @Autowired的作用,自动装配,省去写get/set方法
这个注解就是spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get. <bean id="userDao" clas ...
- [转]JavaScript的实例化与继承:请停止使用new关键字
JavaScript中的new关键字可以实现实例化和继承的工作,但个人认为使用new关键字并非是最佳的实践,还可以有更友好一些的实现.本文将介绍使用new关键字有什么问题,然后介绍如何对与new相关联 ...
- bzoj 5281 [Usaco2018 Open]Talent Show——0/1分数规划
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5281 把分子乘1000,就能在整数里做了. 这种水题也花了这么久…… #include< ...
- Scala学习——泛型[T]的6种使用(初)
package com.dtspark.scala.basics /** * 1,scala的类和方法.函数都可以是泛型. * * 2,关于对类型边界的限定分为上边界和下边界(对类进行限制) * 上边 ...
- Django admin有用的自定义功能
引用园友 无名小妖 的博客 https://www.cnblogs.com/wumingxiaoyao/p/6928297.html 写的很好,但是博客园不能转载,不过我已经点赞了~