Django DRF 视图子类

文章目录

    • 1. 引子
    • 2. ListAPIView
    • 3. CreateAPIView
    • 4. RetrieveAPIView
    • 5. DestoryAPIView
    • 6. UpdateAPIView
    • 7. ListCreateAPIView
    • 8. RetrieveDestroyAPIView
    • 9. RetrieveUpdateAPIView
    • 10. RetrieveUpdateDestoryAPIView

1. 引子

DRF 提供了 9 个视图子类,分别为 ListAPIView、CreateAPIView、ListCreateAPIView、UpdateAPIView、DestroyAPIView、RetrieveAPIView、RetrieveDestroyAPIView、RetrieveUpdateDestroyAPIView、RetrieveUpdateAPIView

导入语句

  • from rest_framework.generics import CreateAPIView, ListAPIView, ListCreateAPIView
  • from rest_framework.generics import UpdateAPIView, DestroyAPIView, RetrieveAPIView
  • from rest_framework.generics import RetrieveDestroyAPIView, RetrieveUpdateDestroyAPIView, RetrieveUpdateAPIView

2. ListAPIView

继承自:GenericAPIView、ListModelMixin。该视图字类提供 get 方法

使用 ListAPIView 查看所有(部分代码)

from app01 import models
from app01.serializer import BookSerializer
from rest_framework.generics import ListAPIView

class BookView(ListAPIView):

    queryset = models.Book.objects
    serializer_class = BookSerializer
        

查看源码

class ListAPIView(mixins.ListModelMixin, GenericAPIView):
                  
    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)
        

3. CreateAPIView

继承自: GenericAPIView、CreateModelMixin。该视图字类提供 post 方法

使用 CreateAPIView 创建(部分代码)

from app01 import models
from app01.serializer import BookSerializer
from rest_framework.generics import CreateAPIView

class BookView(CreateAPIView):

    queryset = models.Book.objects
    serializer_class = BookSerializer

查看源码

class CreateAPIView(mixins.CreateModelMixin, GenericAPIView):

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)
        

4. RetrieveAPIView

继承自: GenericAPIView、RetrieveModelMixin。该视图字类提供 get 方法

使用 RetrieveAPIView 查看单个(部分代码)

from app01 import models
from app01.serializer import BookSerializer
from rest_framework.generics import RetrieveAPIView

class BookView1(RetrieveAPIView):

    queryset = models.Book.objects
    serializer_class = BookSerializer
        

查看源码

class RetrieveAPIView(mixins.RetrieveModelMixin, GenericAPIView):

    def get(self, request, *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)

5. DestoryAPIView

继承自:GenericAPIView、DestoryModelMixin。该视图字类提供 delete 方法

使用 DestoryAPIView 删除单个(部分代码)

class BookView1(DestroyAPIView):

    queryset = models.Book.objects
    serializer_class = BookSerializer
       

查看源码

class DestroyAPIView(mixins.DestroyModelMixin, GenericAPIView):

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

6. UpdateAPIView

继承自:GenericAPIView、UpdateModelMixin。该视图字类提供 putpatch 方法

使用 UpdateAPIView 修改单个(部分代码)

class BookView1(UpdateAPIView):

    queryset = models.Book.objects
    serializer_class = BookSerializer
    

查看源码

class UpdateAPIView(mixins.UpdateModelMixin, GenericAPIView):

    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)
        

7. ListCreateAPIView

继承自: GenericAPIView、ListModelMixin、CreateModelMixin,该视图子类一个实现创建和查询所有。提供 get、create 方法

8. RetrieveDestroyAPIView

继承自: GenericAPIView、RetrieveModelMixin、DestroyModelMixin。提供 get、delete方法

9. RetrieveUpdateAPIView

继承自: GenericAPIView、RetrieveModelMixin、UpdateModelMixin。该视图字类提供 get、put、patch方法

10. RetrieveUpdateDestoryAPIView

继承自:GenericAPIView、RetrieveModelMixin、UpdateModelMixin、DestoryModelMixin。该视图字类提供 get、put、patch、delete方法

你可能感兴趣的:(Django,框架,django,python,restful)