Django Restful Framework 基础 Api (二)
APIView 类
建议配合官方文档阅读
APIView
基于类的视图
REST framework 提供了一个 APIView 类,它继承于 Django 的 View 类
APIView 类与 View 类不同的地方:
- 传递给处理方法的 request 对象是 REST framework 的
Request实例,而不是 Django 的HttpRequest实例,两者的区别可查看另一篇博客:点我跳转 - 处理方法返回 REST framework 的
Response,而不是 Django 的HttpResponse。视图将管理内容协商,并在响应中设置正确的渲染器 - 任何
APIException异常都会被捕获并进行适当的响应 - 传入的请求会进行认证,在请求分派给处理方法之前将进行适当的权限检查(可设置允许或禁止)
和 View 类相似,传入的请求被分派到适当的处理方法,如 .get() 或 .post 。此外,我们可以在类上设置许多属性
例如:
1 | from rest_framework.views import APIView |
除了基本使用之外,REST Framework 提供了各种 Mixins 和 Viewsets ,包含许多方法和属性。一次性理解会比较困难,除了多看官方文档,我找到了一个在线浏览的参照资源,包含所有的属性和方法:Classy Django REST Framework
APIView 类的常用属性
.renderer_classes
设置渲染器
.parser_classes
设置解析器
.authentication_classes
设置认证器
.permission_classes
设置权限验证器
基于方法的视图
REST framework 也允许使用基于函数的视图。它提供了一套简单的装饰器来包装你的函数视图,以确保它们接收 Request(而不是 Django HttpRequest)实例并允许它们返回 Response(而不是 Django HttpResponse),并允许你配置该请求的处理方式
@api_view()
使用方法:@api_view(method=[])
@api_view 是一个装饰器,设置视图允许响应的 HTTP 方法,使用 settings 中指定的默认渲染器,解析器,认证类等,如下:
1 | from rest_framework.decorators import api_view |
灵活使用修饰器
为了覆盖默认设置,REST framework 提供了一系列可以添加到视图中的附加装饰器。这些必须在 @api_view 装饰器下方。例如,要创建一个使用 throttle 来确保它每天只能由特定用户调用一次的视图,请使用 @throttle_classes 装饰器,传递一个 throttle 类列表:
1 | from rest_framework.decorators import api_view, throttle_classes |
可供使用的修饰器:
@renderer_classes(...)@parser_classes(...)@authentication_classes(...)@throttle_classes(...)@permission_classes(...)
结语
APIView 继承于 Django 的 View ,是 REST framework 视图的基础类,各种复杂的 Viewsets 和 Minxins 都基于此,十分有必要掌握它
以上,谢谢阅读,有帮助的可以打个赏~~