两个视图基类

APIView
GenericAPIView

ViewSet

1
2
3
4
5
6
7
8
9
10
11
12
13
ViewSetMixin
ViewSet(ViewSetMixin,APIView)
GenericViewSet(ViewSetMixin,GenericAPIView)
ReadOnlyModelViewSet(RetrieveModelMixin,
ListModelMixin,
GenericAPIView)

ModelViewSet(CreateModelMixin,
RetrieveModelMixin,
UpdateModelMixin,
DestroyModelMixin,
ListModelMixin,
GenericViewSet)

‘“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“

五个视图扩展类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CreateModelMixin
- create

ListModelMixin
- list

RetrieveModelMixin
- retrieve

UpdateModelMixin
- update
- perform_update
- partial_update

DestroyModelMixin
- destroy
- perform_destroy

九个视图扩展子类,继承上面5个视图扩展类加视图类

View(Django) -> dispatch -> 对应的视图方法

1
2
3
4
5
6
7
8
9
ListAPIView:                      ListModelMixin,APIView
CreateAPIView: CreateModelMixin,APIView
ListCreateAPIView: ListModelMixin,CreateModelMixin,APIView
RetrieveAPIView: RetrieveModelMixin,APIView
UpdateAPIView: UpdateModelMixin,APIView
DestoryAPIView: DestoryModelMixin,APIView
RetrieveDestoryAPIView:RetrieveModelMixin,DestoryModelMixin,APIView
RetrieveUpdateAPIView:RetrieveModelMixin,UpdateModelMixin,APIView
RetrieveDestoryUpdateAPIView:RetrieveModelMixin,DestoryModelMixin,UpdateModelMixin,APIView

视图集

1
2
3
4
GenericViewSet:ViewSetMixin,GenericAPIView # 没有提供任何actions,但是提供了GenericAPIView的两个属性和5个方法。
ModelViewSet:ListAPIView,CreateAPIView,RetrieveAPIView,UpdateAPIView,DestoryAPIView,GenericAPIView # 提供了5个actions,2个属性和5个方法
ReadOnlyModelViewSet:ListModelMixis,RetrieveModelMixin,GenericAPIView # 提供了两个actions,读全部数据,读单条数据
ViewSet:ViewSetMixin,APIView # 需要自己写actions,填写映射关系

__END__