3 回答
TA贡献1842条经验 获得超13个赞
只有在使用通用视图或视图集时才会自动执行分页
阅读文档
并回答你的第二个问题 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。
添加回答
举报
