您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django Rest Framework:在ViewSet上启用分页(例如ModelViewSet分页)

Django Rest Framework:在ViewSet上启用分页(例如ModelViewSet分页)

仅在使用通用视图或视图集时才自动执行分页

一个障碍是将文档翻译成英文。他们想要传达的是您需要一个通用的视图集。通用viewsets从扩展通用ApiViews这对分页查询集和响应额外的类方法

另外,您提供了自己的list方法,但是认的分页过程实际上是由mixin处理的:

class ListModelMixin(object):
    """
    List a queryset.
    """
    def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())

        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            return self.get_paginated_response(serializer.data)

        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)

简单的解决方案,使用框架代码

class Foo(mixins.ListModelMixin, viewsets.GenericViewSet):
    queryset = User.objects.all()
    serializer = UserSerializer

更为复杂的解决方案是,如果您需要一个自定义list方法,则应按照自己认为合适的方式编写,但要采用上述mixin代码段的样式。

Go 2022/1/1 18:48:59 有317人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶