Django REST Framework-函数视图

2023-04-28 02:24:38     来源:腾讯云     编辑:bj001    


(资料图)

除了类视图之外,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添加到视图中。这样,只有通过身份验证的用户才能访问这个视图。

关键词:

相关新闻
相关新闻
v 推荐福彩3D第2023178期晒票 激发我们更加勇敢地追求幸福生活 2023-07-07
v 珠江水运关键指标快速增长 2023-07-07
v 真相 | “经济胁迫”是美国手中杀人的“刀” 2023-07-07
v 微单相机推荐2013_微单相机推荐2013 2023-07-07
v 多样化种植技术模式助甘肃河西区域保障粮食安全_微头条 2023-07-07
v 教育部部署做好2023年中小学暑期安全工作 世界球精选 2023-07-07
v 泽连斯基将访问土耳其会见埃尔多安,克宫:密切关注会谈结果 2023-07-07
v 1至6月四川公路水路交通建设完成投资1445亿元,同比增长27% 2023-07-07
v 蚂蚁基金被罚7368万元,总经理林思思被罚15万元 2023-07-07
v 主城都市区仍是主阵地!重庆市新增1366家“专精特新”企业  2023-07-07
v 好消息!西南地区首个百兆瓦级电网侧独立储能电站正式并网运行 2023-07-07
v 首批确定20所!重庆市全面启动市级清廉学校试点示范建设工作 2023-07-07
v 江苏:无锡开出“百万价码”引育宣传文化人才 2023-07-07
v 点赞!湘江新区高校毕业生就业工作在全国作典型交流 2023-07-07
v 两市主力资金净流出230亿元 非银金融等行业实现净流入 2023-07-07
v 同比增长8% 长安1-6月销量超120万辆 2023-07-07
v 【风口解读】红蜻蜓上半年净利预增超66%,去年同期基数低下滑超19% 2023-07-07
v 因违规参与银行保险机构业务活动等 蚂蚁集团被罚没超37亿元 2023-07-07
v 金融管理部门对蚂蚁集团罚没71.23亿元,要求关停“相互宝”业务 2023-07-07
v 中国中免上半年实现营收358.58亿元 净利润38.64亿元 2023-07-07
v 头条焦点:用心守护群众生命安全——重庆市万州区群众避险转移一线见闻 2023-07-07
v 上汽集团:第二季度整车销量环比增长32.5% 2023-07-07
v 横店东磁预计上半年实现归母净利11.8亿元至12.6亿元 光伏产业盈利同比实现翻番以上增长 2023-07-07
v 证监会同意碳酸锂期货及期权注册 2023-07-07
v 国家卫健委:提升职业健康检查和职业病诊断结论的准确性 2023-07-07
v 昨天天津局地有小冰雹!高温持续至……要凉快了! 2023-07-07
v “心友会”吐“心”生 2023-07-07
v 华为张平安:盘古大模型不写诗 只做事 2023-07-07
v 宁夏第一个公布2023年养老金调整细则,具体有哪些变化呢? 2023-07-07
v 第19届亚运会杭州西湖赛区场馆有哪些 2023-07-07
分享到:
更多

网站运营:财经头条

财经头条 版权所有©1997-2016 未经书面授权禁止复制或建立镜像
京ICP备12018864号-11
联系我们:291 32 36@qq.com

营业执照公示信息