DRF框架总结

序列化器类

类名                                                                  
 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种基本操作之外,如果想给一个视图集中添加其他处理方法,直接在视图集中定义即可。

路由Router

 注: 

 1)路由Router是专门配合视图集来使用的,可以使用Router自动生成视图集中相应处理函数对应的URL配置项。

2)使用Router自动生成视图集中相应处理函数对应的URL配置项时,除了常见的5种基本操作之外,如果视图集中有添加的其他处理方法,则需要给这些方法加上action装饰器之后,才会动态生成其对应的URL配置项。

你可能感兴趣的:(DRF框架总结)