GenericViewSet
GenericViewSet
继承自 GenericAPIView
,它是 ModelViewSet
和 ReadOnlyModelViewSet
的基类,提供了基本的视图操作,包括列表查询、详情查询、创建、更新和删除等。
与 ModelViewSet
和 ReadOnlyModelViewSet
不同的是,GenericViewSet
不自动绑定任何查询集和序列化器,需要手动配置。例如,我们可以在 views.py
文件中定义一个 PublisherViewSet
视图集:
from rest_framework import viewsets
from .models import Publisher
from .serializers import PublisherSerializer
class PublisherViewSet(viewsets.GenericViewSet):
queryset = Publisher.objects.all()
serializer_class = PublisherSerializer
def list(self, request, *args, **kwargs):
# 列表查询操作
pass
def create(self, request, *args, **kwargs):
# 创建操作
pass
def retrieve(self, request, *args, **kwargs):
# 详情查询操作
pass
def update(self, request, *args, **kwargs):
# 更新操作
pass
def partial_update(self, request, *args, **kwargs):
# 部分更新操作
pass
def destroy(self, request, *args, **kwargs):
# 删除操作
pass
在这个例子中,我们使用 viewsets.GenericViewSet
创建一个视图集,并将 Publisher
模型的查询集设置为 Publisher.objects.all()
,将 PublisherSerializer
序列化器设置为默认序列化器。然后,我们手动实现了视图集的各种操作,包括列表查询、创建、详情查询、更新、部分更新和删除。