Pagination di Django rest framework
django rest framework memiliki fitur pagination bawaaan. untuk menerapkan pagination, terlebih dahuklu perlu menambahkan setingan file settings.py. dan tabahnkan kode berikut
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE': 100
}
sesuaikan pagination dengan kebutuhan, dengan ini response terdapat meta seperti preoperty next,prev,dan result namun apabila dikode terdapat serializer, perlu ditambahkan kode dibawah untuk return responsenya
Class view_name(APIView,PageNumberPagination):
serializer_class = Serializer
def get(self,request):
entity =Modelname.objects.all()
results = self.paginate_queryset(entity, request, view=self)
serializer = ModelSerializer(results, many=True)
return self.get_paginated_response(serializer.data) # tmbahkan kode ini
atau bisa menambahkan seperti ini
from django.http import HttpResponse
from rest_framework.views import (APIView)
from rest_framework.response import Response
from rest_framework import status
from .models import Gallery
from .serielizers import GallerySerializers, GallerySyncSerializers
from rest_framework.pagination import PageNumberPagination
# Create your views here.
class GalleryApiView(APIView):
def get(self, request, *args, **kwargs):
galleries = Gallery.objects.all()
paginator = PageNumberPagination() # tambahkan kode berikut
page = paginator.paginate_queryset(galleries, request) # masukkan return model ke queryset
serializer = GallerySerializers(page, many=True)
return paginator.get_paginated_response(serializer.data)
reference: