您也可以通過重寫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