DRF Pagination

kukudas·2022년 4월 16일
0

Django

목록 보기
5/5

프로젝트에는 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

0개의 댓글

관련 채용 정보