第一个障碍是将文档翻译成英文。他们想要传达的是您需要一个通用的视图集。通用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代码段的样式。