Django REST Framework-视图集类型(一)

2023-04-25 09:36:01 浏览数 (1)

在 Django REST Framework 中,视图集(Viewset)是一种方便的 API 开发方式,它将视图(View)和序列化器(Serializer)组合起来,提供了一组标准的 API 操作(列表、创建、更新、删除、详情等),可以大大简化 API 的编写和维护工作,提高开发效率和代码可读性。

视图集可以分为以下几种类型:

ModelViewSet

ModelViewSet 是最常用的视图集类型,它继承了 GenericAPIViewModelMixin,可以自动生成常用的 CRUD 操作,包括列表查询、创建、更新、删除、详情查询等。

我们可以通过设置 queryset 属性指定数据查询集,通过设置 serializer_class 属性指定数据序列化器,来自动实现 API 的基本操作。例如,我们可以在 views.py 文件中定义一个 BookViewSet 视图集:

代码语言:javascript复制
from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializer

class BookViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

在这个例子中,我们使用 viewsets.ModelViewSet 创建一个视图集,并将 Book 模型的查询集设置为 Book.objects.all(),将 BookSerializer 序列化器设置为默认序列化器。

ReadOnlyModelViewSet

ReadOnlyModelViewSet 继承自 GenericAPIViewReadOnlyModelMixin,提供了只读的操作,包括列表查询和详情查询。

ModelViewSet 不同的是,ReadOnlyModelViewSet 不支持创建、更新和删除操作,适用于只读的数据接口场景。例如,我们可以在 views.py 文件中定义一个 AuthorViewSet 视图集:

代码语言:javascript复制
from rest_framework import viewsets
from .models import Author
from .serializers import AuthorSerializer

class AuthorViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = Author.objects.all()
    serializer_class = AuthorSerializer

在这个例子中,我们使用 viewsets.ReadOnlyModelViewSet 创建一个只读的视图集,并将 Author 模型的查询集设置为 Author.objects.all(),将 AuthorSerializer 序列化器设置为默认序列化器。

0 人点赞