来源:腾讯云
【资料图】
除了类视图之外,Django REST Framework还支持函数视图。函数视图是普通的Django视图函数,可以用于处理API请求。与类视图不同,函数视图没有任何类或方法可以重写。但是,您可以使用装饰器来添加认证和权限检查,以及其他功能。
以下是一个简单的函数视图的例子:
from rest_framework.decorators import api_viewfrom rest_framework.response import Response@api_view(["GET"])def hello_world(request): return Response({"message": "Hello, world!"})
在这个例子中,我们使用@api_view装饰器来将一个普通的Django视图函数转换为API视图。我们将请求方法限制为GET,并返回一个包含消息的响应。
@api_view装饰器是一个很好的起点,因为它允许您在不使用类视图的情况下使用DRF的其余功能。您可以使用DRF的其他装饰器来添加其他功能,如认证、权限检查、缓存等。
以下是一些常用的DRF装饰器:
@authentication_classes(classes)
: 添加认证类。classes是认证类的列表,按优先级排序。@permission_classes(classes)
: 添加权限类。classes是权限类的列表,按优先级排序。@throttle_classes(classes)
: 添加节流类。classes是节流类的列表,按优先级排序。@renderer_classes(classes)
: 添加渲染器类。classes是渲染器类的列表,按优先级排序。@parser_classes(classes)
: 添加解析器类。classes是解析器类的列表,按优先级排序。@cache_response(timeout, key_func=None, cache=None)
: 缓存响应。timeout是缓存时间(秒),key_func是一个函数,用于生成缓存键,cache是一个可用于缓存的缓存实例。@api_view(http_method_names)
: 允许使用的HTTP方法。http_method_names是一个方法名称列表。以下是一个使用装饰器的函数视图的示例:
from rest_framework.decorators import api_view, authentication_classes, permission_classesfrom rest_framework.authentication import TokenAuthenticationfrom rest_framework.permissions import IsAuthenticatedfrom rest_framework.response import Response@api_view(["GET"])@authentication_classes([TokenAuthentication])@permission_classes([IsAuthenticated])def secret_data(request): data = {"message": "You have access to secret data!"} return Response(data)
在这个例子中,我们定义了一个名为secret_data的函数视图,并使用@api_view装饰器将其转换为API视图。我们使用@authentication_classes装饰器将TokenAuthentication添加到视图中,并使用@permission_classes装饰器将IsAuthenticated添加到视图中。这样,只有通过身份验证的用户才能访问这个视图。
标签: