请求进来 封装request. 版本限制 认证 权限 节流
版本 self.version_param url中版本的key
self.default_version
self.is_allowed_version
都是写在配置文件中 如果是默认就是?version= reverse 获取版本
print(request.version) 获取处理版本的对象
print(request.versioning_scheme) REST_FRAMEWORK = {
"DEFAULT_VERSION":'v1',
"ALLOWED_VERSIONS": ['v1','v2'] ,
"VERSION_PARAM":'version',
} URL中通过get的方式获取 自定义
from django.shortcuts import render,HttpResponse
from rest_framework.views import APIView
from rest_framework.request import Request
# Create your views here. class ParamVersion(object):
def determine_version(self, request, *args, **kwarags):
version = request.query_params.get('version')
return version class UsersView(APIView):
versioning_class = ParamVersion
def get(self,request, *args, **kwargs):
# version = request._request.GET.get('version')
# print(version)
print(request.version) return HttpResponse('用户列表') 在路径中传参 常用方式
views.py
from django.shortcuts import render,HttpResponse
from rest_framework.versioning import QueryParameterVersioning,URLPathVersioning
class UsersView(APIView):
versioning_class = URLPathVersioning
def get(self,request, *args, **kwargs): print(request.version) return HttpResponse('用户列表') cmdb 下的 urls.py
from django.conf.urls import url,include
from cmdb import views
urlpatterns = [
url(r'^(?P<version>[v1|v2]+)/users/$',views.UsersView.as_view())
] 全局使用时 推荐使用的方式
setting文件
REST_FRAMEWORK = {
"DEFAULT_VERSIONING_CLASS":"rest_framework.versioning.URLPathVersioning"
"DEFAULT_VERSION":'v1',
"ALLOWED_VERSIONS": ['v1','v2'] ,
"VERSION_PARAM":'version',
} views.py文件
from django.shortcuts import render,HttpResponse
class UsersView(APIView):
def get(self,request, *args, **kwargs): print(request.version) return HttpResponse('用户列表') urls.py文件 cmdb下的
urlpatterns = [
url(r'^(?P<version>[v1|v2]+)/users/$',views.UsersView.as_view())
] 总结:
使用:
配置文件:
REST_FRAMEWORK = {
"DEFAULT_VERSIONING_CLASS":"rest_framework.versioning.URLPathVersioning"
"DEFAULT_VERSION":'v1',
"ALLOWED_VERSIONS": ['v1','v2'] ,
"VERSION_PARAM":'version',
}
路由系统
urlpatterns = [
url(r'^(?P<version>[v1|v2]+)/users/$',views.UsersView.as_view())
] 主路由
from django.conf.urls import url,include
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^cmdb/',include('cmdb.urls'))
] 视图中
from django.shortcuts import render,HttpResponse
from rest_framework.views import APIView from django.urls import reverse
from rest_framework.request import Request
# Create your views here. class UsersView(APIView):
#反向生成URL
def get(self,request, *args, **kwargs):
#获取版本
print(request.version)
#获取处理版本的对象
print(request.versioning_scheme)
#通过rest_framework反向生成URL
u1 = request.versioning_scheme.reverse(viewname='user',request=request)
print(u1)
#通过原生Django反向生成URL
u2 = reverse(viewname='user',kwargs={'version':})
print(u2)
return HttpResponse('用户列表')

rest_framework (版本)的更多相关文章

  1. Django Rest Framework源码剖析(四)-----API版本

    一.简介 在我们给外部提供的API中,可会存在多个版本,不同的版本可能对应的功能不同,所以这时候版本使用就显得尤为重要,django rest framework也为我们提供了多种版本使用方法. 二. ...

  2. Restframework的版本及分页

    1.版本 1.1基于url的get传参方式 1.创建django项目(起名我的是version),再创建一个app01应用 创建完成,通过python3 manage.py startapp api ...

  3. DRF版本组件

    1.DRF版本组件配置类局部使用 局部配置: 方式一:直接配置versioning_class=QueryParameterVersioning 方式二:直接配置versioning_class=UR ...

  4. Django rest framework(5)----解析器

    目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...

  5. 07 Django REST Framework 解析器与渲染器

    01-解析器 REST 框架包括一些内置的Parser类,允许你接受各种媒体类型的请求.还支持定义自己的自定义解析器,这使你可以灵活地设计API接受的媒体类型. 注意: 开发客户端应用程序时应该始终记 ...

  6. resful规范

    1.简介 什么是resful resful是一个规范,说白了就是面向资源编程,把网络中所有的东西,想象成资源 2.规范 10条规范 1)API与用户的通信协议,总是用HTTPS协议:HTTPS比htt ...

  7. REST Framework组件的解析源码

    首先我们要知道解析器的作用 解析器就是对你请求体中的数据进行反序列化.封装 把你的所有的请求数据都封装在request.data中 以后就在request.data中获取数据 我们先导入rest_fr ...

  8. redis介绍及在购物车项目中的应用,用户认证

    1.redis 2.购物车的构建 api结构: models.py(创建完后自行添加数据) from django.db import models from django.contrib.conte ...

  9. DRF视图组件

    DRF视图组件: CVB模式继承----五层 from django.views import View # Django的View from rest_framework.views import ...

随机推荐

  1. java.util.UnknownFormatConversionException: Conversion = ''';

    今天在测试一个新的项目,在执行sql查询报表的时候.由于我的sql中带有%,导致在输出日志时报错“java.util.UnknownFormatConversionException: Convers ...

  2. Chrome的JSON View插件

    Chrome的JSON View插件 学习了:http://www.cnplugins.com/zhuanti/five-chrome-json-plugins.html 下载了:http://www ...

  3. C#一个托付的样例

    C#中的函数能够被声明的一个托付所调用. 函数为静态方法.和托付声明的參数返回值要一致.   class Program { delegate float MathOperationDelegate( ...

  4. UVALive - 2031 Dance Dance Revolution 三维dp

    题目大意:有一个胖子在玩跳舞机.刚開始的位置在(0,0).跳舞机有四个方向键,上左下右分别相应1,2,3,4.如今有下面规则 1.假设从0位置移动到随意四个位置,消耗能量2 2.假设从非0位置跳到相邻 ...

  5. 跟我学设计模式视频教程——适配器模式,适配器模式VS装饰模式

    课程视频 适配器模式 适配器模式VS装饰模式 唠嗑 课程笔记 课程笔记 课程代码 课程代码 新课程火热报名中 课程介绍

  6. spring mvc 插入一条数据 返回该数据的主键编号

    import org.springframework.jdbc.core.PreparedStatementCreator; import org.springframework.jdbc.suppo ...

  7. mybatis的sql中使用$会出现sql注入示例

    mybatis的sql中使用$会出现sql注入示例: 模拟简单登录场景: 页面代码: function login(){ //sql注入 var user = { username : "' ...

  8. Visual Studio 2015 官方下载及密钥

    Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品.Visual Studio 2015 是一个丰富的集成开发环境,可用于创建出色的 Windows.Andr ...

  9. Windows 10 Mobile 演示:插入耳机自动执行 APP

    Windows Mobile 10 新特性:插入外部设备自动动作(如插入耳机执行 APP.打开小工具):另外可以找到最后一次使用设备地点和时间: http://www.tudou.com/progra ...

  10. 配置 centos apache 的日志文件为每天保存,在home分区

    /usr/local/apache/bin/rotatelogs 这个执行程序会根据安装方式不同的位置也不同,yum安装的话,路径为:/usr/sbin/rotatelogs 改为: ErrorLog ...