gpt4 book ai didi

python - 分页不适用于我的 Django Rest 框架项目,并且我正在使用通用 View

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:53 24 4
gpt4 key购买 nike

我尝试了很多选项,但分页仍然不起作用。我正在使用通用 View 和这样的代码:

class ListFood(generics.ListAPIView):

queryset = Food.objects.all()
serializer_class = FoodSerializer

def list(self,request):
queryset = self.get_queryset()
serializer = FoodSerializer(queryset, many=True)
return Response(serializer.data)

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"),
]

没有错误消息,但是当我请求 URL http://127.0.0.1:8000/api/food/?page=1http://127.0. 0.1:8000/api/food/?page=2

它仍然没有分页。 Django 为我提供了 2000 条 JSON 数据。

最佳答案

原始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

关于python - 分页不适用于我的 Django Rest 框架项目,并且我正在使用通用 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57449013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com