Django Rest Framework 视图(上)
一、ModelViewSet
① 源码分析
ModelViewSet 做的更彻底,它又一次继承了 GenericViewSet,并且在此之前又继承了其它几个类,因此功能更多,变成了
ModelViewSet --> GenericViewSet --> APIView --> View
class ModelViewSet(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.ListModelMixin,
GenericViewSet):
pass
从这些类的名字可以大概看出,
CreateModelMixin
RetrieveModelMixin
UpdateModelMixin
DestroyModelMixin
ListModelMixin
分别对应,创建,获取单条数据,更新,删除,获取多条数据。
② 路由
由于在获取,删除,更新数据的时候需要这项数据的唯一标识,这里是 pk 主键,因此需要在 url 中增加正则匹配。
③ 视图
在视图中,并没有增加相应的增删改查的逻辑却能完成相应的功能,这是因为继承的 mixin 类中,已经有对应的方法,视图类会自动调用父类的方法。
④ 自定义
在 ModelViewSet 中,继承了多个 mixin 类,而这些类又分别封装了不同的对应于增删改查的方法,因此如果想要自定义一个接口,实现部分 http 方法,就可以根据需要继承不同的 mixin 类
mixins.CreateModelMixin
mixins.RetrieveModelMixin
mixins.UpdateModelMixin
mixins.DestroyModelMixin
mixins.ListModelMixin