Skip to main content

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: