(DRF) Pagination

duo2208·2022년 2월 3일
0

Django

목록 보기
20/23
post-thumbnail
🚀 (DRF API Guide) Pagination

Pagination


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

  • PageNumberPagination
    • page / page_size 인자를 통한 페이징 처리
    • page : 몇 번째 페이지 인가.
    • page_size : 한 페이지에 몇 개의 레코드를 보여줄 것인가.
  • LimitOffsetPagination
    • offset / limit 인자를 통한 페이징 처리
    • offset : 몇 번째 레코드부터 보여줄 것인가.
    • limit : offset 부터 몇 개의 레코드를 보여줄 것인가.
    • offset + limit - 1

field 미지정을 대비한 전역설정 Pagination

  • PageNumberPagination

page_size 미지정 상황을 대비해 settings.py 에서 전역으로 default 설정을 할 수 있습니다.

# settings.py

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

PageNumberPagination 을 상속받아 다시 커스텀할 수도 있습니다.

# pagination.py
from rest_framework.pagination import PageNumberPagination

class MyPageNumberPagination(PageNumberPagination):
	page_size = 10
    
# views.py
class APIViewWithPage(APIView):
	pagination_class = PageNUmberPagination
  • LimitOffsetPagination

limit 미지정 상황을 대비해 settings.py 에서 전역으로 default 설정을 할 수 있습니다. 마찬가지로 상속받아 커스텀 가능합니다.

# settings.py

REST_FRAMEWORK = {
	'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'LIMIT' : 3
}

📌 참고 출처

0개의 댓글