大白学习笔记

导航

版本的使用

在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",
}

posted on 2023-10-19 16:16  大-白  阅读(16)  评论(0)    收藏  举报