from rest_framework.versioning import urlpathversioning, queryparameterversioning, acceptheaderversioning
#基於url的正則方式:urlpathversioning------>/v1/users/(需要掌握這種)
#基於url的get傳參方式:queryparameterversioning------>如:/users?version=v1#基於主機名方法:hostnameversioning------>v1.example.com
#基於django路由系統的namespace:namespaceversioning------>example.com/v1/users/
#在cbv類中加入
versioning_class = urlpathversioning
rest_framework =
urlpatterns =[url(r
'^(?p[v1|v2]+)/books/$
', views.book.as_view(),name='
cao'
),給路由重新命名,為了後面做反向解析
]
#版本控制
from rest_framework.versioning import
urlpathversioning, queryparameterversioning, acceptheaderversioning
class
book(viewsetmixin, apiview):
#區域性使用
versioning_class =urlpathversioning
def get_all(self, request,*args,**kwargs):
#獲取版本
(request.version)
#路由反向解析,這種方式不好,麻煩
#from django.urls import reverse
#url=reverse(viewname='cao',kwargs=)
#print(url)
#提供給咱的解析,為了反向生成url
reverse_url=request.versioning_scheme.reverse('
cao',request=request)
(url)
response =
book_list =models.book.objects.all()
#例項化產生乙個加密分頁的物件
page =cursorpagination()
#按nid排序
page.ordering = '
nid'
page_list =page.paginate_queryset(book_list, request, self)
#丟到序列化類中,完成序列化
ser = myser.bookserializers(instance=page_list, many=true)
#最後返回資料
return page.get_paginated_response(ser.data)
版本控制掌握的:urlpathversioning
-在setting中配置:
'version_param
':'version',
'default_version
':'v1',
'allowed_versions
': ['
v1', 'v2'
], -區域性使用:
versioning_class =urlpathversioning
-全域性使用:
'default_versioning_class
':'rest_framework.versioning.urlpathversioning',
-路由配置:
url(r
'^(?p[v1|v2|v3]+)/books/$
', views.book.as_view(),name='
ttt'
), -在檢視類中的request物件中,就可以取出版本號
-反向解析:
因為request物件能取出版本號,內部自動填入
如果是路由有別的有名/無名分組,需要手動傳過去
url2=request.versioning_scheme.reverse('
ttt',request=request)
rest framework之認證元件
1 models層 class user models.model username models.charfield max length 32 password models.charfield max length 32 user type models.integerfield choice...
rest framework之版本控制
api版本控制可以用來在不同的客戶端使用不同的行為。rest框架提供了大量不同的版本設計。版本控制是由傳入的客戶端請求決定的,並且可能基於請求url,或者基於請求頭。有許多有效的方法達到版本控制的目的。特別是為具有多個客戶的長期系統工程進行設計時,沒有版本控制的系統也是可以的。當使用版本控制時,re...
REST framework之許可權元件
例如只用超級使用者才能訪問指定的資料,普通使用者不能訪問,所以就要有許可權元件對其限制 from rest framework.permissions import basepermission class userpermission basepermission message 不是超級使用者,...