django-rest-framework中GenericAPIView+Mixin扩展类、合成类实现增删改查

1. GenericAPIView+Mixin实现

from rest_framework.generics import GenericAPIView
from rest_framework.mixins import CreateModelMixin, ListModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin


class GBookListAPIView(ListModelMixin, CreateModelMixin, GenericAPIView):
    """列表视图"""
    # 指定查询集、序列化器类
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoSerializer

    def get(self, request):
        return self.list(request)

    def post(self, request):
        return self.create(request)


class GBookDetailAPIView(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin, GenericAPIView):
    """详情视图"""
    # 指定查询集和序列化器
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoSerializer

    def get(self, request, pk):
        return self.retrieve(request, pk)

    def put(self, request, pk):
        return self.update(request, pk)

    def delete(self, request, pk):
        return self.destroy(request, pk)

2. 直接继承封装好的合成类:ListCreateAPIView, RetrieveUpdateDestroyAPIView

from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIView


class GBookListAPIView(ListCreateAPIView):
    """列表视图"""
    # 指定查询集、序列化器类
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoSerializer


class GBookDetailAPIView(RetrieveUpdateDestroyAPIView):
    """详情视图"""
    # 指定查询集和序列化器
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoSerializer

猜你喜欢

转载自blog.csdn.net/weixin_42289273/article/details/114174871
今日推荐