Как использовать пагинацию в этом API с помощью Django

Здесь я пытаюсь создать API getData используя Django Rest Framework, в котором я хочу получить данные используя Pagination, я создал это статически, но это должно быть как (получение PAGE и количество ROWS на этой странице) в запросе и соответственно данные получить из базы данных, а также показать количество записей, которые я получил.

пожалуйста, помогите мне решить эту проблему, я понятия не имею о том, как логически работает пагинация, просто имею базовое понимание.

class DeviceControlPolicyView(APIView):
    def get(self, request):
        if request.data.get('page', 'rows'):
            if request.data.get('page') == "1" and request.data.get('rows') == "1":
                 print(request.data.get('rows'))
                 print(request.data.get('page'))
                 qry = DeviceControlPolicy.objects.all()[0:1]
                 serializer = DeviceControlPolicySerializer(qry, many=True).data
                 entries = 1
                 data = {
                      'details':serializer,
                      'entry':entries
                 }
                 return Response(data)
        elif request.data.get('page') == "1" and request.data.get('rows') == "2":
            print(request.data.get('rows'))
            print(request.data.get('page'))
            qry = DeviceControlPolicy.objects.all()[0:2]
            serializer = DeviceControlPolicySerializer(qry, many=True).data
            entries = 2
            data = {
                'details': serializer,
                'entry': entries
            }
            return Response(data)

Посмотрите документацию DRF по пагинации здесь.

Вы можете установить класс пагинации в APIView и попросить DRF позаботиться о пагинации ответов из набора запросов.

В вашем случае попробуйте

from rest_framework import generics
from rest_framework.pagination import PageNumberPagination

class CustomPageNumberPagination(PageNumberPagination):
    page_size = 100
    page_size_query_param = 'rows'
    max_page_size = 1000

class DeviceControlPolicyView(generics.ListAPIView):
    queryset = DeviceControlPolicy.objects.all()
    serializer_class = DeviceControlPolicySerializer
    pagination_class = CustomPageNumberPagination

также относятся к DRF generics

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