我尝试了很多选择,但是分页仍然不起作用。我正在使用通用视图和类似这样的代码:
settings.py
在REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 20
}
中,我这样写:
class StandardResultsSetPagination(PageNumberPagination):
page_size = 100
page_size_query_param = 'page_size'
max_page_size = 1000
class ListFood(generics.ListAPIView):
queryset = Food.objects.all()
serializer_class = FoodSerializer
pagination_class = LargeResultsSetPagination
def list(self,request):
queryset = self.get_queryset()
serializer = FoodSerializer(queryset, many=True)
return Response(serializer.data)
我试图修改分页样式的特定方面,例如:
urls.py
但是它仍然没有用。
我的app_name = "lab"
urlpatterns = [
re_path('^food/$', ListFood.as_view(), name="listfood"),
]
是:
http://127.0.0.1:8000/api/food/?page=1
没有错误消息,但是当我请求URL http://127.0.0.1:8000/api/food/?page=2
或{{1}}
它仍然没有分页。 Django用JSON给了我2000条数据。
答案 0 :(得分:0)
原始的list
实现会分摊响应:
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)
您的类使用自定义实现覆盖list
,因此它不返回分页响应。只是不要覆盖list
。