3 回答

TA贡献1842条经验 获得超12个赞
只有在使用通用视图或视图集时才会自动执行分页
阅读文档
并回答你的第二个问题 DRF 中的 GenericViewset 和 Viewset 有什么区别
DRF 有两个主要的处理视图的系统:
APIView:这提供了一些处理方法,来处理HTTP动词:
get
,post
,put
,patch
,和delete
。ViewSet:这是对 APIView 的抽象,它提供操作作为方法:
list
:只读,返回多个资源(http 动词:)get
。返回一个字典列表。retrieve
:只读,单一资源(http 动词:get
,但需要一个 id)。返回单个字典。create
:创建一个新的资源(HTTP动词:post
)update/partial_update
:编辑资源(HTTP动词:put/patch
)destroy
:删除一个资源(HTTP动词:delete
)GenericViewSet:GenericViewSet有很多,最常见的是
ModelViewSet
. 他们继承GenericAPIView
并具有全面实施所有的行动:list
,retrieve
,destroy
,updated
,等等。当然,你也可以挑选其中的一些,阅读文档。

TA贡献1836条经验 获得超4个赞
也只是从 GenericViewSet 继承。例如:
#views.py
class PolicyViewSet(viewsets.ViewSet, viewsets.GenericViewSet):
def list(self, request):
queryset = Policy.objects.all()
page = self.paginate_queryset(queryset)
serializer = PolicySerializer(page, many=True)
return self.get_paginated_response(serializer.data)

TA贡献1877条经验 获得超6个赞
如何使用普通视图集设置分页?
如果你想在你的视图集中使用“pagination_class”,那么你应该使用GenericViewSet而不是ViewSet。
添加回答
举报