Как использовать пагинацию в этом 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