본문 바로가기
카테고리 없음

[TIL]내일배움캠프- DRF , pagination

by Byeong 2024. 5. 1.

기본적인 기능들은 다 구현을 성공했는데 Pagination부분에서 시간이 많이 걸렸다.

 

Pagination

 

페이지를 호출해 주는 것인데 밑에와 같이 JSON형식으로 보여준다. 

HTTP 200 OK
{
    "count": 1023,
    "next": "https://api.example.org/accounts/?page=5",
    "previous": "https://api.example.org/accounts/?page=3",
    "results": [
       …
    ]
}

 

https://www.django-rest-framework.org/api-guide/pagination/?q=ListAPIView%29#pagenumberpagination    

 

DFR pagination을 보며 문제를 풀어 났지만 도통 뭔 소리 인지 몰라 힘들고 시간이 너무 많이 소비됐다.

공식문서에서는 이렇게해라 라고 정의는 돼 있지만 아직 이것을 어떻게 구현해야 하는 감각이 많이 부족했다.

 

그래서 두 번째 추천 방법은 Girhub를 참고하는 것 

 

https://github.com/encode/django-rest-framework/blob/master/rest_framework/pagination.py  

코드들이 이쁘게 줄지어 있는데 보면 진짜 눈이 돌아가지만 집중해서 내가 원하는 것을 차근차근 찾아본다면 원하는 내용을 얻을 수 있다.

 

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

 

이런 식으로 겨우겨우 구현에 성을 했다.