是PaginationSerializer,通过以下方式设置序列化程序类:
'DEFAULT_PAGINATION_SERIALIZER_CLASS':'YourCustomPaginationSerializer'
或
class MyView(generics.GenericAPIView):
pagination_serializer_class = YourCustomPaginationSerializerClass
mixin.py
def list(self, request, *args, **kwargs):
instance = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(instance)
if page is not None:
serializer = self.get_pagination_serializer(page)
else:
serializer = self.get_serializer(instance, many=True)
return Response(serializer.data)
generics.py
def get_pagination_serializer(self, page):
"""
Return a serializer instance to use with paginated data.
"""
class SerializerClass(self.pagination_serializer_class):
class Meta:
object_serializer_class = self.get_serializer_class()
pagination_serializer_class = SerializerClass
context = self.get_serializer_context()
return pagination_serializer_class(instance=page, context=context)
如果你在做migration 的东西,别忘了settings.py 或View 中的分页参数,已经改成新的分页器了。
比如。 PAGINATE_BY_PARAM -> page_size_query_param。
无论如何,我认为新的分页器比以前的更舒适。
在Pagination Docs上查看更多详情