您也可以通过重写PageNumberPagination定义自定义分页类
pagination.py
from rest_framework import pagination
class StandardResultsSetPagination(pagination.PageNumberPagination):
page_size = 10
page_query_param = 'page'
page_size_query_param = 'per_page'
max_page_size = 1000
这将有助于确定
PAGE_SIZE,页面查询自定义参数和MAX_PAGE_SIZE
views.py
from rest_api.pagination import StandardResultsSetPagination
@api_view(['GET',])
@permission_classes([AllowAny,])
def PersonView(request):
person_objects = Person.objects.all()
if len(person_objects)> 0:
paginator = StandardResultsSetPagination()
result_page = paginator.paginate_queryset(person_objects, request)
serializer = PersonSerializer(result_page, many=True)
return paginator.get_paginated_response(serializer.data)
else:
return Response({},status=status.HTTP_200_OK)
如: 请求
GET https://api.example.org/persons/?page=1&per_page=10
响应
HTTP 200 OK
{
"count": 1023
"next": "https://api.example.org/persons/?page=2&per_page=10",
"previous": null,
"results": [
…
]
}
什么问题? – Hexaholic
它为什么需要成为函数视图?你能不能把它变成一个'ListView'? – Sayse