前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django REST Framework-函数视图

Django REST Framework-函数视图

原创
作者头像
玖叁叁
发布2023-04-24 10:35:11
5370
发布2023-04-24 10:35:11
举报
文章被收录于专栏:玖叁叁

除了类视图之外,Django REST Framework还支持函数视图。函数视图是普通的Django视图函数,可以用于处理API请求。与类视图不同,函数视图没有任何类或方法可以重写。但是,您可以使用装饰器来添加认证和权限检查,以及其他功能。

以下是一个简单的函数视图的例子:

代码语言:javascript
复制
from rest_framework.decorators import api_view
from 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是一个方法名称列表。

以下是一个使用装饰器的函数视图的示例:

代码语言:javascript
复制
from rest_framework.decorators import api_view, authentication_classes, permission_classes
from rest_framework.authentication import TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from 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添加到视图中。这样,只有通过身份验证的用户才能访问这个视图。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档