diff --git a/rest_framework/decorators.py b/rest_framework/decorators.py index 864ff73958..d84525585a 100644 --- a/rest_framework/decorators.py +++ b/rest_framework/decorators.py @@ -70,6 +70,9 @@ def handler(self, *args, **kwargs): WrappedAPIView.permission_classes = getattr(func, 'permission_classes', APIView.permission_classes) + WrappedAPIView.versioning_class = getattr(func, "versioning_class", + APIView.versioning_class) + WrappedAPIView.schema = getattr(func, 'schema', APIView.schema) @@ -113,6 +116,13 @@ def decorator(func): return decorator +def versioning_class(versioning_class): + def decorator(func): + func.versioning_class = versioning_class + return func + return decorator + + def schema(view_inspector): def decorator(func): func.schema = view_inspector diff --git a/tests/test_decorators.py b/tests/test_decorators.py index 8d0805cbba..9cc6c41e3e 100644 --- a/tests/test_decorators.py +++ b/tests/test_decorators.py @@ -7,7 +7,8 @@ from rest_framework.authentication import BasicAuthentication from rest_framework.decorators import ( action, api_view, authentication_classes, parser_classes, - permission_classes, renderer_classes, schema, throttle_classes + permission_classes, renderer_classes, schema, throttle_classes, + versioning_class ) from rest_framework.parsers import JSONParser from rest_framework.permissions import IsAuthenticated @@ -16,6 +17,7 @@ from rest_framework.schemas import AutoSchema from rest_framework.test import APIRequestFactory from rest_framework.throttling import UserRateThrottle +from rest_framework.versioning import QueryParameterVersioning from rest_framework.views import APIView @@ -150,6 +152,16 @@ def view(request): response = view(request) assert response.status_code == status.HTTP_429_TOO_MANY_REQUESTS + def test_versioning_class(self): + @api_view(["GET"]) + @versioning_class(QueryParameterVersioning) + def view(request): + return Response({"version": request.version}) + + request = self.factory.get("/?version=1.2.3") + response = view(request) + assert response.data == {"version": "1.2.3"} + def test_schema(self): """ Checks CustomSchema class is set on view pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy