프로젝트에는 PageNumberPagination
사용할 거임.
setting.py에 글로벌로 사용할 페이지네이션 설정해줌.
# settings.py
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 100,
}
각 뷰에서 페이지네이션 오버라이드해서 각자 사정에 맞게 수정해서 사용할 수도 있음.
esi.views.py
from rest_framework.pagination import PageNumberPagination
class CustomPagination(PageNumberPagination):
page_size = 2
class IndustryJobViewSet(viewsets.GenericViewSet):
queryset = IndustryJob.objects.all()
serializer_class = IndustryJobSerializer
pagination_class = CustomPagination
페이지네이션 사용할 뷰가 GenericViewSet을 사용하고 있어서 기존에 있던 뷰에 따로 처리를 해줘야함. mixins.ListModelMixin을 보면 페이지네이션 처리를 하는게 있음. 이거보고 하면 될것 같음.
# mixins.ListModelMixin
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
https://www.django-rest-framework.org/api-guide/pagination/#pagination
https://stackoverflow.com/questions/31785966/django-rest-framework-turn-on-pagination-on-a-viewset-like-modelviewset-pagina