用於版本的控制
from rest_framework.versioning importqueryparameterversioning,acceptheaderversioning,namespaceversioning,urlpathversioning
#基於url的get傳參方式:queryparameterversioning------>如:/users?version=v1
#基於url的正則方式:urlpathversioning------>/v1/users/##
基於主機名方法:hostnameversioning------>v1.example.com
#基於django路由系統的namespace:namespaceversioning------>example.com/v1/users/
#在cbv類中加入
versioning_class = urlpathversioning
rest_framework =
基於正則的方式
from django.conf.urls importurl, include
from web.views import
testview
urlpatterns =[
url(r
'^(?p[v1|v2]+)/test/
', testview.as_view(), name='
test'),
]from rest_framework.views import
apiview
from rest_framework.response import
response
from rest_framework.versioning import
urlpathversioning
class
testview(apiview):
versioning_class =urlpathversioning
def get(self, request, *args, **kwargs):
#獲取版本
(request.version)
#獲取版本管理的類
(request.versioning_scheme)
#反向生成url
reverse_url = request.versioning_scheme.reverse('
test
', request=request)
(reverse_url)
return response('
get請求,響應內容')
#基於django內建,反向生成url
from django.urls import
reverse
url2=reverse(viewname='
ttt',kwargs=)
print(url2)
#執行determine_version,返回兩個值,放到request物件裡
version, scheme = self.determine_version(request, *args, **kwargs)
request.version, request.versioning_scheme =version, scheme
def determine_version(self, request, *args, **kwargs):
#當配置上版本類之後,就會例項化
if self.versioning_class is
none:
return
(none, none)
scheme =self.versioning_class()
return (scheme.determine_version(request, *args, **kwargs), scheme)
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 不是超級使用者,...