从0学DRF(实战和源码剖析)——版本

使用方法

版本一般的两种形式

  • a. URL中通过GET传参()
    自定义:
    http://127.0.0.1:8000/api/users/?version=v2
class ParamVersion(object):
	def determine_version(self, request, *args, **kwargs):
		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)
		# version = request.query_params.get('version')
		# print(version)

		print(request.version)

		return HttpResponse('用户列表')
  • b. 在URL中传参(推荐使用)
urlpatterns = [
	# url(r'^admin/', admin.site.urls),
	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',
}
		
class UsersView(APIView):

	def get(self,request,*args,**kwargs):
		print(request.version)
		return HttpResponse('用户列表')
总结

使用:
配置文件:

REST_FRAMEWORK = {
	"DEFAULT_VERSIONING_CLASS":"rest_framework.versioning.URLPathVersioning",
	"DEFAULT_VERSION":'v1',
	"ALLOWED_VERSIONS":['v1','v2'],
	"VERSION_PARAM":'version',
}

路由系统:

urlpatterns = [
		# url(r'^admin/', admin.site.urls),
		url(r'^api/', include('api.urls')),
	]

	urlpatterns = [
		# url(r'^admin/', admin.site.urls),
		url(r'^(?P<version>[v1|v2]+)/users/$', views.UsersView.as_view(),name='uuu'),
	]
			

视图:

class UsersView(APIView):

	def get(self,request,*args,**kwargs):

		# 1. 获取版本
		print(request.version)
		
		# 2. 获取处理版本的对象
		print(request.versioning_scheme)

		# 3. 反向生成URL(rest framework)
		u1 = request.versioning_scheme.reverse(viewname='uuu',request=request)
		print(u1)

		# 4. 反向生成URL
		u2 = reverse(viewname='uuu',kwargs={'version':2})
		print(u2)

		return HttpResponse('用户列表')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值