gpt4 book ai didi

django - 如何在 DRF GenericAPIView 上启用分页?

转载 作者:行者123 更新时间:2023-12-02 20:25:23 26 4
gpt4 key购买 nike

所以我最近从使用 APIView 切换到 GenericAPIView - 希望这能让我访问更多 DRF 功能 - 分页就是其中之一。

我的理解是,我可以在全局添加此设置,分页将仅适用于所有 GenericAPIViews

设置.py

REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 5
}

这不会启用分页。

然后我也将 pagination_class 定义为类属性

class job(GenericAPIView):

serializer_class = JobSerializer
pagination_class = PageNumberPaginator
def get_queryset(self):
return Job.objects.all()

def get(self, request, format=None):
queryset = self.get_queryset()
if queryset.exists():
serializer = JobSerializer(queryset, many=True)
return Response(serializer.data)
else:
return Response({"Returned empty queryset"}, status=status.HTTP_404_NOT_FOUND)

仍然没有分页。此端点返回超过 100 条记录,添加 ?page=1 或 ?page=2 的字符串查询只会返回相同的 100 多个列表。

我在这里做错了什么?我知道我可以在我的类中复制 DRF 的分页器 View 方法 - 但我认为使用 GenericAPIView 可以让我轻松利用内置分页?

最佳答案

您可以使用ListAPIView :

class Job(ListApiView):
serializer_class = JobSerializer
pagination_class = PageNumberPaginator
def get_queryset(self):
return Job.objects.all()

关于django - 如何在 DRF GenericAPIView 上启用分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50106849/

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