What is Views
drf提供了两个基类,五个视图扩展类,9个视图集
drf提供了一个Django中view的子类APIView
,主要变动大概为以下:
- 重新封装了
Request
与Response
实例。- 使用了独有的Request与Response对象,并且提供了专有的解析器
Parser
可以根据HTTPContent-Type
指明的请求数据进行解析。
- 使用了独有的Request与Response对象,并且提供了专有的解析器
- 增加了自有的鉴权/节流
- 在django中
dispatch()
分发前,会对请求进行身份认证、权限检查、流量控制。
- 在django中
- 异常捕获
APIException
。
APIView implement
python
|
|
What is GenericAPIView
GenericAPIView
是继承与 APIView
的子类,在 APIView
的基础上增加了对于视图的通用支持方法,用来简化用户代码的编写。主要增加了 QuerySet
与 Serializers
GenericAPIView implement
python
|
|
How to Use
Reference
使用APIView
与使用View
类似,像往常一样,请求会根据不同的方法被dispatch
到对应的处理逻辑方法,例如.get()
or .post()
引入
python
|
|
使用GenericAPIView
是 APIView
的子类,是实现了APIView
的常用行为的一个类。一般情况下会与引入
queryset
:对象查询集,使用GenericAPIView
必须设置该属性,或者重写get_queryset()
方法serializer_class
: 序列化器类,必须设置该属性或重写get_serializer_class()
方法。lookup_field
: 查库时使用的条件字段,一般为传入的值,默认为pkpagination_class
:分页
python
|
|
五个视图扩展
Mixin类:DRF提供的通用的增删改查行为,Mixin一般与generics.GenericAPI
混用,可以组成灵活的视图。
CreateModelMixin
: 保存新对象实例- 创建成功返回201与序列化后的列表,失败则返回400与错误的详细信息
UpdateModelMixin
:对现有对象实例进行更新- 与创建相同,成功返回200,失败返回400
DestroyModelMixin
:删除对象实例- 成功删除返回204 错误将返回一个404
ListModelMixin
:列出实例列表- 查询成功返回200,需要设置queryset,相应数据可以设置分页
RetrieveModelMixin
: 只读操作单个对象
九个视图集
在路由确定用于请求的控制器之后,您的控制器负责理解请求并产生适当的输出。
— Ruby on Rails 文档Django REST 框架允许您将一组相关视图的逻辑组
视图集 ViewSet
是DRF基于view使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中,如.get()
或.post()
则不在提供了,换为.list()
和.create()
的具体逻辑动作。