[Django Rest Framework] Pagination 페이징 처리
DRF Pagination
3 min readMar 18, 2020
- PageNumberPagination
page / page_size 인자를 통한 페이징 처리
page_size 미지정 상황을 위해서 디폴트 지정이 필요합니다.
settings.py 내 REST_FRAMEWORK = { “PAGE_SIZE” : 10 } 를 통해 전역 설정
PageNumberPagination 을 상속받아 page_size 설정
# APIView에서 page_size를 커스텀하여 지정하고싶을 때
from rest_framework.pagination import PageNumberPaginationclass MyPageNumberPagination(PageNumberPagination):
page_size = 10class APIViewWithPage(APIView):
pagination_class = PageNumberPagination
- LimitOffsetPagination
offset / limit 인자를 통한 페이징 처리
limit 미지정 상황을 위해서 디폴트 지정이 필요합니다.
settings.py 내 REST_FRAMEWORK = { “PAGE_SIZE” : 10 } 를 통해 전역 설정
LimitOffsetPagination 을 상속받아 page_size 설정
# APIView에서 page_size를 커스텀하여 지정하고싶을 때
from rest_framework.pagination import LimitOffsetPaginationclass MyLimitOffsetPagination(LimitOffsetPagination):
page_size = 10class APIViewWithPage(APIView):
pagination_class = LimitOffsetPagination
전역 설정
settings.py 내 지정해주면 됩니다.
REST_FRAMEWORK = {
'PAGE_SIZE' : 10,
'DEFAULT_PAGINATION_CLASS' : 'rest_framework.pagination.PageNumberPagination',
}
localhost:8000/post/?page=1 , 2 … 이렇게 url를 통해 페이지 이동이 가능합니다.
API 서버에서 count 는 총 갯수, next 는 다음 페이지 url, previous는이전 페이지 url 를 의미합니다.