본문 바로가기

TIL/Python

DRF Pagination 설정 / APIView 사용 시 세팅

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES' : [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
        ],
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10
}

 

DRF 공식문서에서 페이지네이션에 대해 설명이 있길래

그대로 적용해보았는데 안되길래

 

여기저기 찾아보면서 좀 더 알아보았다.

 

DRF의 Pagination 설정은 저렇게 settings.py에 설정해주면

전역적으로 pagination이 적용되고 각 view별로 설정해줄수도 있는데

APIView 사용 시에는 페이지네이션을 적용시키려면 추가 설정이 필요하다는 것

 

https://stackoverflow.com/questions/35830779/django-rest-framework-apiview-pagination

 

Django Rest Framework - APIView Pagination

I have a very simple APIView, but I don't know how to setup pagination here. In this scenario I select an Event with given pk, then I get all the NewsItems assigned to this Event. pagination_clas...

stackoverflow.com

 

그래서 위 글을 참고해서 그대로 적용시켜보았다.

class ProductList(APIView):
    paginator = PageNumberPagination()

    def get(self, request):
        products = Product.objects.all()
        result_page = self.paginator.paginate_queryset(products, request)
        serializer = ProductSerializer(result_page, many=True)
        return self.paginator.get_paginated_response(serializer.data)

 

결과는 성공적으로 적용되었다

 

끝!

'TIL > Python' 카테고리의 다른 글

Django Test code  (0) 2024.05.03
DRF JWT로 로그아웃 기능 넣기  (0) 2024.05.01
DRF Serializer 패스워드 해싱  (0) 2024.04.26
Django HTTP 301 에러  (0) 2024.04.22
[django project] 5. 해시태그  (0) 2024.04.18