gpt4 book ai didi

django-rest-framework - 在 djangorestframework 中不请求任何页面时禁用分页

转载 作者:行者123 更新时间:2023-12-05 08:53:51 25 4
gpt4 key购买 nike

我为 ListView API 编写了如下所示的分页类。

class PhotoListPagination(PageNumberPagination):
page_size = 100
page_size_query_param = 'page_size'
max_page_size = 10000

并在我的 API View 中将其用作 pagination_class:

class UserSinglePhotoAPIView(ListAPIView):
model = Photo
serializer_class = PhotoSerializer
pagination_class = PhotoListPagination

def get_queryset(self):
return Profile.objects.get(auth_user__username=self.kwargs['username']).get_single_photos()

当我向 /link/to/my/API/end-point?page=1 或任何其他页码发送 GET 请求时,它运行良好.当前,当 page 没有值(向 /link/to/my/API/end-point 发送请求)时,它显示第 1 页。但我需要获得所有结果当我没有在请求中设置 page 键时没有分页。

这可能吗?

任何帮助将不胜感激。

最佳答案

这是通用 View 中的paginate_queryset方法,

def paginate_queryset(self, queryset):
"""
Return a single page of results, or `None` if pagination is disabled.
"""
if self.paginator is None:
return None
return self.paginator.paginate_queryset(queryset, self.request, view=self

因此,如果此函数返回 None,ListView 将返回包含所有结果的单个页面,因此按如下方式重写此方法:

class UserSinglePhotoAPIView(ListAPIView):
...
...
def paginate_queryset(self, queryset):
if self.paginator and self.request.query_params.get(self.paginator.page_query_param, None) is None:
return None
return super().paginate_queryset(queryset)

关于django-rest-framework - 在 djangorestframework 中不请求任何页面时禁用分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52474430/

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