前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django REST Framework-如何使用视图集(三)

Django REST Framework-如何使用视图集(三)

原创
作者头像
玖叁叁
发布2023-04-25 09:46:56
6130
发布2023-04-25 09:46:56
举报
文章被收录于专栏:玖叁叁

定制视图集操作

视图集提供了一些通用的操作,例如获取列表、创建对象、获取详情、更新对象、部分更新对象和删除对象等。如果需要定制这些操作的行为,可以在视图集中重写对应的方法。例如,在 BookViewSet 中,我们可以定制 create() 方法,以便在创建新书籍时自动将当前用户设置为书籍的作者:

代码语言:javascript
复制
class BookViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

    def perform_create(self, serializer):
        serializer.save(author=self.request.user)

在这个例子中,我们在 BookViewSet 中重写了 perform_create() 方法,该方法会在创建新书籍时被调用。我们使用 self.request.user 获取当前请求的用户,并将其设置为新书籍的作者。

另一个例子是定制 list() 方法,以便在获取书籍列表时只返回当前用户的书籍:

代码语言:javascript
复制
class BookViewSet(viewsets.ModelViewSet):
    serializer_class = BookSerializer

    def get_queryset(self):
        user = self.request.user
        return Book.objects.filter(author=user)

在这个例子中,我们在 BookViewSet 中重写了 get_queryset() 方法,该方法会在获取书籍列表时被调用。我们使用 self.request.user 获取当前请求的用户,并将其用于过滤书籍列表,只返回当前用户的书籍。

视图集类型

DRF 中提供了多种视图集类型,可以根据不同的需求选择合适的视图集类型。以下是几种常见的视图集类型:

  • ModelViewSet: 提供了默认的 CRUD 操作,以及一些其他常见操作(例如过滤、分页、搜索等)。
  • ReadOnlyModelViewSet: 提供了默认的读取操作,但不支持创建、更新和删除操作。
  • GenericViewSet: 提供了多种操作,例如列表、创建、获取详情、更新、部分更新和删除等。
  • ViewSet: 不提供任何操作,需要手动在子类中定义操作方法。

视图集类型的选择取决于 API 的需求和开发人员的编写习惯。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定制视图集操作
  • 视图集类型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档