版本的使用
在views的三种应用方式
#url.py
from django.urls import path
from app01 import views
urlpatterns = [
# path('admin/', admin.site.urls),
path('login/', views.LoginView.as_view(), name="hh"),
path('api/<str:version>/login/', views.ApiView.as_view(), name="hh"),
path('accept/login/', views.AcceptiView.as_view(), name="hh"),
]
#views.py
from rest_framework.decorators import APIView
from rest_framework.response import Response
from rest_framework.versioning import QueryParameterVersioning,URLPathVersioning,AcceptHeaderVersioning
class LoginView(APIView):
versioning_class = QueryParameterVersioning
def get(self, request):
print(request.version)
print(request.versioning_scheme)
url = request.versioning_scheme.reverse("hh",request=request)
print("反向生成url:", url)
return Response("......")
class ApiView(APIView):
versioning_class = URLPathVersioning
def get(self, request,*args,**kwargs):
print(request.version)
print(request.versioning_scheme)
url = request.versioning_scheme.reverse("hh",request=request)
print("反向生成url:", url)
return Response("......")
class AcceptiView(APIView):
versioning_class = AcceptHeaderVersioning
def get(self, request,*args,**kwargs):
print(request.version)
print(request.versioning_scheme)
url = request.versioning_scheme.reverse("hh",request=request)
print("反向生成url:", url)
return Response("......")
#如果是全局配置
REST_FRAMEWORK = {
"UNAUTHENTICATED_USER": None,
"VERSION_PARAM": "version",
"DEFAULT_VERSION": "v1",
"ALLOWED_VERSIONS": ["v1", "v2"],
"DEFAULT_VERSIONING_CLASS": "rest_framework.versioning.URLPathVersioning",
}
浙公网安备 33010602011771号