Loading

24.通用类视图

通用类视图
以下类是具体的通用视图,也是我们平时真正使用的类,除非你需要深度定制,否则不要直接使用mixin父类。
这些视图类可以从 rest_framework.generics 导入
CreateAPIView
"""
仅用于创建功能的视图。提供 post 方法。
"""
#源码
class CreateAPIView(mixins.CreateModelMixin,
                    GenericAPIView):
    """
    Concrete view for creating a model instance.
    """
    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)
"""
其实就是先继承了CreateModelMixin,然后继承GenericAPIView,最后留个post方法的坑。
后面的类的构造,基本也是这个套路。
"""
ListAPIView
"""
以只读的方式列出某些查询对象的集合。提供 get 方法。
"""
#源码
class ListAPIView(mixins.ListModelMixin,
                  GenericAPIView):
    """
    Concrete view for listing a queryset.
    """
    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)
RetrieveAPIView
"""
以只读的形式获取某个对象。提供 get 方法。
"""
#源码
class RetrieveAPIView(mixins.RetrieveModelMixin,
                      GenericAPIView):
    """
    Concrete view for retrieving a model instance.
    """
    def get(self, request, *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)
DestroyAPIView
"""
删除单个模型实例。提供 delete 方法。
"""
#源码
class DestroyAPIView(mixins.DestroyModelMixin,
                     GenericAPIView):
    """
    Concrete view for deleting a model instance.
    """
    def delete(self, request, *args, **kwargs):
        return self.destroy(request, *args, **kwargs)
UpdateAPIView
"""
更新单个模型实例。提供 put 和 patch 方法
"""

#源码
class UpdateAPIView(mixins.UpdateModelMixin,
                    GenericAPIView):
    """
    Concrete view for updating a model instance.
    """
    def put(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)

    def patch(self, request, *args, **kwargs):
        return self.partial_update(request, *args, **kwargs)
ListCreateAPIView
"""
创建或者列出模型实例的集合。提供 get 和 post 方法。
同时继承了ListModelMixin、CreateModelMixin两个mixin类,以及基类 GenericAPIView。
"""
#源码
class ListCreateAPIView(mixins.ListModelMixin,
                        mixins.CreateModelMixin,
                        GenericAPIView):
    """
    Concrete view for listing a queryset or creating a model instance.
    """
    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)
RetrieveUpdateAPIView
"""
读取或更新单个模型实例。提供 get , put 和 patch 方法的占坑。
"""
#源码
class RetrieveUpdateAPIView(mixins.RetrieveModelMixin,
                            mixins.UpdateModelMixin,
                            GenericAPIView):
    """
    Concrete view for retrieving, updating a model instance.
    """
    def get(self, request, *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)

    def put(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)

    def patch(self, request, *args, **kwargs):
        return self.partial_update(request, *args, **kwargs)
RetrieveDestroyAPIView
"""
读取或删除单个模型实例。提供 get 和 delete 方法。
"""
#源码
class RetrieveDestroyAPIView(mixins.RetrieveModelMixin,
                             mixins.DestroyModelMixin,
                             GenericAPIView):
    """
    Concrete view for retrieving or deleting a model instance.
    """
    def get(self, request, *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)

    def delete(self, request, *args, **kwargs):
        return self.destroy(request, *args, **kwargs)
RetrieveUpdateDestroyAPIView
"""
读写删除单个模型实例。提供 get , put , patch 和 delete 方法
"""
#源码
class RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin,
                                   mixins.UpdateModelMixin,
                                   mixins.DestroyModelMixin,
                                   GenericAPIView):
    """
    Concrete view for retrieving, updating or deleting a model instance.
    """
    def get(self, request, *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)

    def put(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)

    def patch(self, request, *args, **kwargs):
        return self.partial_update(request, *args, **kwargs)

    def delete(self, request, *args, **kwargs):
        return self.destroy(request, *args, **kwargs)
 

posted @ 2022-07-21 20:17  木子七  阅读(26)  评论(0编辑  收藏  举报