PAGINATION с использованием класса APIView в Django Rest Framework

Я пытался сделать постраничную обработку данных... но это не работает, я все равно получаю все данные из DataBase. это views.py :

class User_apiView(APIView):
    pagination_class=PageNumberPagination
    def get(self, request):
        user = User.objects.all() 
        # pagination_class=PageNumberPagination
        serializer = TripSerializer(user, many = True)
        return Response(serializer.data)

это settings.py :

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

эти данные я получаю в этом url http://127.0.0.1:8000/api/users/?PAGE=4&PAGE_SIZE=1



HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
    {
        "id": 115,
        "is_normaluser": null,
        "is_agency": null,
        "last_login": "2022-02-11T20:28:13.506519Z",
        "is_superuser": true,
        "first_name": "qaz",
    },
    {
        "id": 115,
        "is_normaluser": null,
        "is_agency": null,
        "last_login": "2022-02-11T20:28:13.506519Z",
        "is_superuser": true,
        "first_name": "qaz",
    },
    {
        "id": 115,
        "is_normaluser": null,
        "is_agency": null,
        "last_login": "2022-02-11T20:28:13.506519Z",
        "is_superuser": true,
        "first_name": "qaz",
    },
   
]

Пагинация и т.д. работает только для APIView, в которых реализована логика пагинации, например ListAPIView. Это может работать с:

from rest_framework.generics import ListAPIView

class User_apiView(ListAPIView):
    pagination_class = PageNumberPagination
    queryset = User.objects.all()
    serializer_class = TripSerializer

Это реализует метод .get(…), который будет получать постраничный набор запросов и использовать сериализатор для сериализации данных и помещения их в ответ.

Вернуться на верх