序列化器类
1)如果定义的序列化器类不是针对于模型类,可以直接继承此类即可。
| ModelSerializer
1)序列化:
python
serializer = BookInfoSerializer(book)
获取序列化之后的字典数据
serializer.data
2)反序列化-数据验证
python
serializer = BookInfoSerializer(data=data)
serializer.is_valid()
3)反序列化-新增或更新
a)新增
python
serializer = BookInfoSerializer(data=data)
serializer.is_valid()
serializer.save()
```
b)更新
python
serializer = BookInfoSerializer(book, data=data)
serializer.is_valid()
serializer.save()
视图类
1)继承自View,封装了Django 本身的HttpRequest对象为Request对象。
1)继承自APIView,提供了操作序列化器和数据库数据的方法,通常和Mixin扩展类配合使用。
| ------------------ | ------------------------------------------------------------ |
| RetrieveModelMixin | 提供了一个retrieve方法,封装了获取一条模型对象数据信息的通用流程。 |
| ---------------------------- | ------------------------------------------------------------ |
| RetrieveUpdateDestoryAPIView | 1)继承自RetrieveModelMixin,UpdateModelMixin,DestroyModelMixin和GenericAPIView。2)如果只想定义一个视图提供`获取一个模型信息`和`更新一个模型信息`和`删除一个模型信息`的接口,继承此视图类是最快的方式。 |
视图集类
| -------------------- | ------------------------------------------------------------ |
| ReadOnlyModelViewSet | 1)继承自ListModelMixin,RetrieveModelMixin和GenericViewSet。2)如果使用视图集想一次提供list操作和retrieve操作,继承这个类是最快的。 |
> 注: 除了常见的5种基本操作之外,如果想给一个视图集中添加其他处理方法,直接在视图集中定义即可。
路由Router、
>
> 1)路由Router是专门配合视图集来使用的,可以使用Router自动生成视图集中相应处理函数对应的URL配置项。
>
> 2)使用Router自动生成视图集中相应处理函数对应的URL配置项时,除了常见的5种基本操作之外,如果视图集中有添加的其他处理方法,则需要给这些方法加上action装饰器之后,才会动态生成其对应的URL配置项。