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 ...
随机推荐
- jquery.dataTables.min.js: Uncaught TypeError: Cannot read property 'style' of undefined
原因:datatable表格内容有操作列,而表头没有定义操作列 少写了一行:<th>操作</th>
- 【Codeforces】Gym 101156G Non-Attacking Queens 打表
题意 求$n\times n$的棋盘上放$3$个皇后使得互相不攻击的方案数 拓展是$m\times n$棋盘上放$k$皇后,暴力打表找到了公式 OEIS 代码 import java.math.Big ...
- linux命令学习笔记(27):linux chmod命令
chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限.该命令有两种用法.一种是 包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. Linux系统中的 ...
- 机器学习 F1-Score, recall, precision
在机器学习,模式识别中,我们做分类的时候,会用到一些指标来评判算法的优劣,最常用的就是识别率,简单来说,就是 Acc=Npre/Ntotal 这里的 Npre表示预测对的样本数,Ntotal表示测试集 ...
- Codeforces Gym 101190 NEERC 16 .D Delight for a Cat (上下界的费用流)
ls是一个特别堕落的小朋友,对于n个连续的小时,他将要么睡觉要么打隔膜,一个小时内他不能既睡觉也打隔膜 ,因此一个小时内他只能选择睡觉或者打隔膜,当然他也必须选择睡觉或打隔膜,对于每一个小时,他选择睡 ...
- Qt属性系统(Qt Property System)
Qt提供了巧妙的属性系统,它与某些编译器支持的属性系统相似.然而,作为平台和编译器无关的库,Qt不能够依赖于那些非标准的编译器特性,比如__property 或者 [property].Qt的解决方案 ...
- mongodb入门-关系型RDMS数据库对比及适用场景
引言 最近工作接触到了mongodb数据库,记录下个人对其的理解和使用情况.虽然mongodb 出来的时间已经不短,但是相对mysql mssql oracle 这样传统的关系型数据库来说还是比较年轻 ...
- phantomjs学习
PhantomJS快速入门 本文简要介绍了PhantomJS的相关基础知识点,主要包括PhantomJS的介绍.下载与安装.HelloWorld程序.核心模块介绍等.由于鄙人才疏学浅,难免有疏漏之处, ...
- undefined reference to `pthread_create' collect2: ld returned 1 exit status
问题原因: pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atf ...
- [转]sql where 1=1和 0=1 的作用
sql where 1=1和 0=1 的作用 原文地址:http://www.cnblogs.com/junyuz/archive/2011/03/10/1979646.html where 1=1; ...