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 ...
随机推荐
- BZOJ 1677 [Usaco2005 Jan]Sumsets 求和:dp 无限背包 / 递推【2的幂次方之和】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1677 题意: 给定n(n <= 10^6),将n分解为2的幂次方之和,问你有多少种方 ...
- sublime 相关配置和快捷键
1.安装package control 点击sublime的菜单栏 view->show console :现在打开了控制台, 这个控制台有上下两栏, 上面一栏会实时显示sublime执行了什 ...
- 理解多线程中的ManualResetEvent(C#)
线程是程序中的控制流程的封装.你可能已经习惯于写单线程程序,也就是,程序在它们的代码中一次只在一条路中执行.如果你多弄几个线程的话,代码运行可能会更加“同步”.在一个有着多线程的典型进程中,零个或更多 ...
- listen 58
Different Brain Regions Handle Different Music Types (Vivaldi) versus (the Beatles) . Both great. Bu ...
- 使用top命令查看系统状态
Linux系统可以通过top命令查看系统的CPU.内存.运行时间.交换分区.执行的线程等信息.通过top命令可以有效的发现系统的缺陷出在哪里.是内存不够.CPU处理能力不够.IO读写过高? 使用SSH ...
- Java 并发 —— Java 标准库对并发的支持及 java.util.concurrent 包
0. Collections.synchronizedXxx() Java 中常用的集合框架中的实现类:HashSet/TreeSet.ArrayList/LinkedList.HashMap/Tre ...
- python后台架构Django教程——manage.py命令
一.manage.py命令选项 manage.py是每个Django项目中自动生成的一个用于管理项目的脚本文件,需要通过python命令执行.manage.py接受的是Django提供的内置命令. 内 ...
- CF 949D Curfew——贪心(思路!!!)
题目:http://codeforces.com/contest/949/problem/D 有二分答案的思路. 如果二分了一个答案,首先可知越靠中间的应该大约越容易满足,因为方便把别的房间的人聚集过 ...
- python快速上手教程
python版本 python目前的版本分为2.7和3.5,两种版本的代码目前无法兼容,查看python版本号: python --version 基本数据类型 数字类型 整型和浮点型数据和其它编程语 ...
- Docker入门(六):Stacks
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...