【发布时间】:2021-12-07 01:21:12
【问题描述】:
我有一个 Django Restframework 项目。 这是我的看法:
class JobView(viewsets.ReadOnlyModelViewSet):
queryset = Job.objects.all()
serializer_class = JobSerializer
filter_backends = [filters.OrderingFilter, DjangoFilterBackend, filters.SearchFilter]
search_fields = [...]
ordering_fields = ['jobId']
ordering = ['-jobId']
filterset_fields = ['jobId', 'status']
pagination_class = StandardResultsSetPagination
和我的分页类:
class StandardResultsSetPagination(LimitOffsetPagination):
page_size = 1
视图在路由器中注册:
router.register(r'jobs', JobView)
问题是,它根本不分页。它只是忽略了 pagination_class 属性。
我也试过了:
class JobView(generics.ListAPIView)
并在没有路由器的情况下注册了视图。但问题是一样的。它不分页,只返回一个包含所有作业的 json 列表。
在settings.py中为项目全局定义的情况下,如何在这个视图中实现分页?
【问题讨论】:
-
如果你向
'jobs/?limit=2&offset=1'页面发出请求怎么办? -
它神奇地起作用。起初我在 settings.py 中全局定义了它,在这种情况下它已经分页了,没有 ?limit=2&offset=1 谢谢!
-
@EinEsellerEniE:可能使用
LimitOffsetPagination,也许您应该使用PageNumberPagination? -
问题是我一开始尝试了PageNumberPagination,它改变了输出。我加快了 LimitOffsetPagination 的工作。但在那种情况下,我不得不使用'jobs/?limit=2&offset=1'。对于我的用例,我需要 LimitOffsetPagination。
标签: django django-rest-framework pagination