rest_framework (版本)
- 请求进来 封装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 (版本)的更多相关文章
- Django Rest Framework源码剖析(四)-----API版本
一.简介 在我们给外部提供的API中,可会存在多个版本,不同的版本可能对应的功能不同,所以这时候版本使用就显得尤为重要,django rest framework也为我们提供了多种版本使用方法. 二. ...
- Restframework的版本及分页
1.版本 1.1基于url的get传参方式 1.创建django项目(起名我的是version),再创建一个app01应用 创建完成,通过python3 manage.py startapp api ...
- DRF版本组件
1.DRF版本组件配置类局部使用 局部配置: 方式一:直接配置versioning_class=QueryParameterVersioning 方式二:直接配置versioning_class=UR ...
- Django rest framework(5)----解析器
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...
- 07 Django REST Framework 解析器与渲染器
01-解析器 REST 框架包括一些内置的Parser类,允许你接受各种媒体类型的请求.还支持定义自己的自定义解析器,这使你可以灵活地设计API接受的媒体类型. 注意: 开发客户端应用程序时应该始终记 ...
- resful规范
1.简介 什么是resful resful是一个规范,说白了就是面向资源编程,把网络中所有的东西,想象成资源 2.规范 10条规范 1)API与用户的通信协议,总是用HTTPS协议:HTTPS比htt ...
- REST Framework组件的解析源码
首先我们要知道解析器的作用 解析器就是对你请求体中的数据进行反序列化.封装 把你的所有的请求数据都封装在request.data中 以后就在request.data中获取数据 我们先导入rest_fr ...
- redis介绍及在购物车项目中的应用,用户认证
1.redis 2.购物车的构建 api结构: models.py(创建完后自行添加数据) from django.db import models from django.contrib.conte ...
- DRF视图组件
DRF视图组件: CVB模式继承----五层 from django.views import View # Django的View from rest_framework.views import ...
随机推荐
- Android 中模仿 Twitter 实现 Toolbar Indicator
项目地址:https://github.com/nekocode/ToolbarIndicator
- java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start com
错误如题. 原因:web.xml中的servlet映射<url-pattern> 配置错误 改动正确就可以. 我直接删除了,bug就攻克了. 另一个问题是 xxx.jar fail to ...
- Activity管理笔记
文章仅记录自己学习该模块时的一点理解,看到哪写到哪.所以特别散. AMS管理四大组件外加进程管理,当中最庞大的算是Activity了吧. 1.AMS中对ActivityStack划分为两类.当中一类是 ...
- 基于One-Class的矩阵分解方法
在矩阵分解中. 有类问题比較常见,即矩阵的元素仅仅有0和1. 相应实际应用中的场景是:用户对新闻的点击情况,对某些物品的购买情况等. 基于graphchi里面的矩阵分解结果不太理想.调研了下相关的文献 ...
- Linux内核编译測试
内核编译: Step 1:配置内核编译选项. make menuconfig Optional Step :排除编译结果文件(.o)等之间的依赖性. make mrproper Optional St ...
- ServiceStack.Redis之IRedisClient<第三篇>【转】
事实上,IRedisClient里面的很多方法,其实就是Redis的命令名.只要对Redis的命令熟悉一点就能够非常快速地理解和掌握这些方法,趁着现在对Redis不是特别了解,我也对着命令来了解一下这 ...
- 访问Storm ui界面,出现org.apache.storm.utils.NimbusLeaderNotFoundException: Could not find leader nimbus from seed hosts ["master" "slave1"]. Did you specify a valid list of nimbus hosts for confi的问题解决(图文详解)
不多说,直接上干货! 前期博客 apache-storm-1.0.2.tar.gz的集群搭建(3节点)(图文详解)(非HA和HA) 问题详情 org.apache.storm.utils.Nimbu ...
- 【原创】RPM安装软件时解决依赖性问题(自动解决依赖型)
满足以下3个条件才能自动解决依赖性: 1.使用rpmdb -redhat(在安装时会自动弹出依赖性错误) 2.所有互相依赖的软件都必须在同一个目录下面. 3.调用-aid参数.
- sublime text3前端常用插件
安装Package Control 在安装插件之前,需要让sublime安装Package Control.打开Sublime Text的控制台,快捷键ctrl + ~,在控制台中输入以下代码. im ...
- 创建私有CA, 加密解密基础, PKI, SSL
发现了一篇图文并茂的超棒的 加密解密, CA, PKI, SSL 的基础文章, 链接如下:https://blog.csdn.net/lifetragedy/article/details/5223 ...