(资料图)
除了类视图之外,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添加到视图中。这样,只有通过身份验证的用户才能访问这个视图。
X 关闭
-
巨幅“丝路”长卷献礼黄河岸边甘肃高校120周年生日
中新网兰州12月18日电 (刘玉桃 九美旦增)17日晚,西北师范大学启动120周年校庆年活动。现场一幅巨幅中国画长卷《敦煌印象 丝路虹霓
-
苦难和新生——西藏翻身农奴影像档案:达娃拉珍
苦难和新生——西藏翻身农奴影像档案:达娃拉珍 1959年3月28日,国务院颁布命令,在西藏施行民主改革,彻底废除“政教合一”的封建
-
冰雪盛会即将到来 冠军之城气氛渐浓
燃情冰雪 拼出未来︱冰雪盛会即将到来 冠军之城气氛渐浓 长城网·冀云客户端讯(记者 韩颜 通讯员 马鑫)再过9天,河北省第三届
-
浙江温州发现1名密接者 刻意隐瞒来自上虞行程
(抗击新冠肺炎)浙江温州发现1名密接者 刻意隐瞒来自上虞行程 中新网温州12月18日电(记者 范宇斌)18日,浙江省温州市鹿城区新冠肺