类名
Serializer
1)如果定义的序列化器类不是针对于模型类,可以直接继承此类即可。
2)没有提供save时的create方法和update方法。
ModelSerializer
1)如果定义的序列化器类是针对于模型类,可以直接继承此类即可。
2)提供了save时的create方法和update方法。
1)序列化:
python
创建序列化器对象并传入所有序列化的对象
serializer = BookInfoSerializer(book)
获取序列化之后的字典数据
serializer.data
2)反序列化-数据验证
python
创建序列化器对象并传入数据
serializer = BookInfoSerializer(data=data)
调用`is_valid`方法进行数据验证
serializer.is_valid()
3)反序列化-新增或更新
a)新增
python
创建序列化器对象并传入数据
serializer = BookInfoSerializer(data=data)
调用`is_valid`方法进行数据验证
serializer.is_valid()
调用`save`方法时会调用序列化器类中的`create`方法,可以在`create`方法中实现数据的添加
serializer.save()
```
b)更新
python
创建序列化器对象并传入数据
serializer = BookInfoSerializer(book, data=data)
调用`is_valid`方法进行数据验证
serializer.is_valid()
调用`save`方法时会调用序列化器类中的`update`方法,可以在`update`方法中实现数据的添加
serializer.save()
类名
APIView
1)继承自View,封装了Django 本身的HttpRequest对象为Request对象。
2)认证&权限&限流。
GenericAPIView
1)继承自APIView,提供了操作序列化器和数据库数据的方法,通常和Mixin扩展类配合使用。
2)过滤&排序&分页。
类名
ListModelMixin —— 提供了一个list方法,封装了返回模型数据列表信息的通用流程。
CreateModelMixin —— 提供了一个create方法,封装了创建一条模型对象数据信息的通用流程。
RetrieveModelMixin ——提供了一个retrieve方法,封装了获取一条模型对象数据信息的通用流程。
UpdateModelMixin —— 提供了一个update方法,封装了更新一条模型对象数据信息的通用流程。
DestroyModelMixin —— 提供了一个destroy方法,封装了删除一条模型对象数据信息的通用流程。
类名
ListAPIView
1)继承自ListModelMixin和GenericAPIView。
2)如果想定义一个视图只提供`列出模型所有`信息的接口,继承此视图类是最快的方式。
CreateAPIView
1)继承自CreateModelMixin和GenericAPIView。
2)如果想定义一个视图只提供`创建一个模型信息`的接口,继承此视图类是最快的方式。
RetrieveAPIView
1)继承自RetrieveModelMixin和GenericAPIView。
2)如果想定义一个视图只提供`获取一个模型信息`的接口,继承此视图类是最快的方式。
UpdateAPIView
1)继承自UpdateModelMixin和GenericAPIView。
2)如果只想定义一个视图只提供`更新一个模型信息`的接口,继承此视图类是最快的方式。
DestroyAPIView
1)继承自DestroyModelMixin和GenericAPIView。
2)如果只想定义一个视图只提供`删除一个模型信息`的接口,继承此视图类是最快的方式。
ListCreateAPIView
1)继承自ListModelMixin,CreateModelMixin和GenericAPIView。
2)如果只想定义一个视图提供`列出模型所有`和`创建一个模型信息`的接口,继承此视图类是最快的方式。
RetrieveUpdateAPIView
1)继承自RetrieveModelMixin,UpdateModelMixin和GenericAPIView。
2)如果只想定义一个视图提供`获取一个模型信息`和`更新一个模型信息`的接口,继承此视图类是最快的方式
RetrieveUpdateDestoryAPIView
1)继承自RetrieveModelMixin,UpdateModelMixin,DestroyModelMixin和GenericAPIView。
2)如果只想定义一个视图提供`获取一个模型信息`和`更新一个模型信息`和`删除一个模型信息`的接口,继承此视图类是最快的方式。
类名
ViewSet
1)继承自ViewSetMixin和APIView。
2)如果使用视图集时不涉及数据库的操作,可以直接继承此类。
GenericViewSet
1)继承自ViewSetMixin和GenericAPIView。
2)如果使用视图集涉及数据的操作,可以直接继承此类。
ModelViewSet
1)继承自5个Mixin扩展和GenericViewSet。
2)如果使用视图集想一次提供通用的5种操作,继承这个类是最快的。
ReadOnlyModelViewSet
1)继承自ListModelMixin,RetrieveModelMixin和GenericViewSet。
2)如果使用视图集想一次提供list操作和retrieve操作,继承这个类是最快的。
注: 除了常见的5种基本操作之外,如果想给一个视图集中添加其他处理方法,直接在视图集中定义即可。
注:
1)路由Router是专门配合视图集来使用的,可以使用Router自动生成视图集中相应处理函数对应的URL配置项。
2)使用Router自动生成视图集中相应处理函数对应的URL配置项时,除了常见的5种基本操作之外,如果视图集中有添加的其他处理方法,则需要给这些方法加上action装饰器之后,才会动态生成其对应的URL配置项。