[django] PageNumberPagination 사용법

최승언·2023년 3월 15일
0

django

목록 보기
12/15
post-thumbnail

Django에서 PageNumberPagination 클래스는 DRF(Django Rest Framework)의 페이지네이션 기능을 제공합니다. 이 기능은 데이터의 일부만 가져와서 보여주는 RESTful API에서 매우 유용합니다. 예를 들어, 무한 스크롤 또는 페이지 단위로 데이터를 보여줄 때, 클라이언트 측에서 요청한 페이지 번호와 페이지 당 요소 수에 따라 서버 측에서 필요한 만큼의 데이터를 가져올 수 있습니다.

PageNumberPagination을 사용하는 이유는 다음과 같습니다.

쉬운 구현: PageNumberPagination을 사용하면 간단하게 페이지네이션 기능을 구현할 수 있습니다.
표준 인터페이스: DRF의 페이지네이션 클래스는 표준 인터페이스를 제공하므로 다른 페이지네이션 클래스로 간단히 교체할 수 있습니다.
유연성: PageNumberPagination은 페이지 크기, 페이지 번호 등 다양한 설정을 허용하여 유연성을 높입니다.
아래는 PageNumberPagination을 사용한 예시입니다.

from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response
from rest_framework.views import APIView

class MyPagination(PageNumberPagination):
    page_size = 10
    page_query_param = 'page'
    page_size_query_param = 'page_size'

class MyAPIView(APIView):
    def get(self, request, format=None):
        queryset = MyModel.objects.all()
        paginator = MyPagination()
        result_page = paginator.paginate_queryset(queryset, request)
        serializer = MySerializer(result_page, many=True)
        return paginator.get_paginated_response(serializer.data)

위 코드에서 MyPagination 클래스는 PageNumberPagination 클래스를 상속받아서 구현되었으며, MyAPIView 클래스에서는 get() 메서드를 사용하여 페이지네이션 기능을 구현하였습니다. 페이지네이션 설정은 MyPagination 클래스에서 처리되며, MyAPIView 클래스에서는 페이지네이션 처리된 결과 데이터를 반환합니다. 이렇게 하면, RESTful API에서 간단하게 페이지네이션을 구현할 수 있습니다.

profile
작업하다가 막힌부분을 기록하는 곳.

0개의 댓글