Backend/Django

[django-rest-framework] (13) Pagination

dltjdn 2022. 2. 7. 18:12

DRF에서 기본 지원하는 페이징 방식

PageNumberPagination : page , page_size 인자를 통한 페이징 처리

LimitOffsetPagination : offset, limit 인자를 통한 페이징 처리

 

 

PageNumberPagination

page_size 미지정 상황을 위해, 디폴트 지정이 필요

# settings.py

REST_FRAMEWORK = {
    "PAGE_SIZE" : 10,
 }

 

특정 APIView에서 page_size을 custom 하게 지정  ← PageNumberPagination 상속받아 page_size 설정

from rest_framework.pagination import PageNumberPagination

class MyPageNumberPagination(PageNumberPagination):
    page_size = 10

class APIViewWithPage(APIView):
    pagination_class = PageNumberPagination

 

LimitOffsetPagination

limit 미지정 상황을 위해, 디폴트 지정이 필요

# settings.py

REST_FRAMEWORK = {
    "PAGE_SIZE" : 10,
 }

 

특정 APIView에서 page_size을 custom 하게 지정 ← LimitOffsetPagination 상속받아 dafault_limit 설정

from rest_framework.pagination import LimitOffsetPagination

class MyLimitOffsetPagination(LimitOffsetPagination):
    page_size = 10

class APIViewWithLimit(APIView):
    pagination_class = LimitOffsetPagination

 

 

전역 설정 방법

# settings.py

REST_FRAMEWORK = {
    "PAGE_SIZE" : 10,
    "DEFAULT_PAGINATION_CLASS" : 'rest_framework.pagination.PageNumberPagination',
 }