REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'authentication.jwt.JWTAuthentications',
],
'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.LimitOffsetPagination',
}
settings.py에서 해당 코드를 추가하면 간단히 Limit-Offset Pagination을 구현할 수 잇다.
LImit=2,offset=1 일 경우 2번째 인덱스부터 2개씩 보여준다.
limit=2,offset=2일 경우 3번째 인덱스부터 2개씩 보여준다.
- ![](https://velog.velcdn.com/images/holawan/post/54397e33-8dce-47ed-a54f-6848b1af3ed5/image.GIF)
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'authentication.jwt.JWTAuthentications',
],
#PageNumberPagination
'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination',
#한 페이지에 보여줄 레코드의 수
'PAGE_SIZE':6
}
1페이지 검색
2페이지 검색
#pagination.py
from rest_framework import pagination
class CustomPageNumberPagination(pagination.PageNumberPagination) :
page_size=3
page_size_query_param='count'
max_page_size=5
page_query_param='p'
#views.py
from todos.pagination import CustomPageNumberPagination
class TodosAPIView(ListCreateAPIView) :
serializer_class =TodoSerializer
pagination_class = CustomPageNumberPagination
def get_queryset(self):
return Todo.objects.filter(owner=self.request.user)
page_size: 한 페이지에 보여줄 레코드의 수
page_size_query_param : 파라미터에 count 수를 입력하여 몇 개의 레코드를 보여줄것인지 추가로 요청을 하게 도와준다.
max_page_size : count로 요청 시 너무 많은 레코드를 요청하지 못하게 제한한다.
page_query_param : 'page' 파라미터로 페이지의 번호를 요청해야하는데, 이를 p로 단축하게 도와준다.
page_query_param으로 요청하기
count를 명시하고 요청하기
max_page_size 이상으로 요청하기