훈훈훈

파이썬(Django) :: 페이지네이션으로 회원 목록 조회 API 본문

파이썬/Django

파이썬(Django) :: 페이지네이션으로 회원 목록 조회 API

훈훈훈 2020. 5. 3. 16:06

이번에는 페이지네이션에 대하여 정리해보려고 한다,

 

해당 기능을 설명하기 위해 회원 목록 조회 API를 예시로 설명하려고 한다.

 

회원 목록은 회원 수가 늘어날 수 록 계속 쌓이는 데이터이기 때문에 일정 개수 이상 조회 시, 다음 페이지로 넘어가서 조회하는 기능이 필요하다. 이때, 사용하는 기능이 페이지네이션이다.

 

Django에는 페이지네이션 기능에 관련된 모듈을 제공하는 것으로 알고 있지만, 이번에는 모듈을 사용하지 않고 구현하려고 한다.

 

이제 아래 구현 코드를 살펴보자.

 

# 구현 코드

class AccountList(View):
    def get(self, request):
        ''' 회원정보 리스트로 조회 '''
        offset = int(request.GET.get('offset', 0))
        limit  = int(request.GET.get('limit', 5))

        account_list = Account.objects.order_by('created_at').values('email', 'name', 'gender')[offset:offset+limit]

        return JsonResponse({'data' : list(account_list)}, status = 200)

 

위 코드는 AccountList를 쿼리하는 기능을 작성한 코드이다.

 

페이지네이션 범위에 해당하는 회원정보에 대하여 email, name, gender에 대한 정보를 리턴하도록 작성하였다.

 

페이지네이션을 구현하기 위해서 offsetlimit 두 변수를 선언하였다,

만약 offset = 0, limit = 10 이라고 한다면, 0번 부터 9번까지의 회원 정보를 Json 형식으로 리턴하게 된다.

 

# 실행 결과

{
    "data": [
        {
            "email": "1234@naver.com",
            "name": "1234@naver.com",
            "gender": "man"
        },
        {
            "email": "12345@naver.com",
            "name": "12345@naver.com",
            "gender": "man"
        },
        {
            "email": "12346@naver.com",
            "name": "12346@naver.com",
            "gender": "man"
        },
        {
            "email": "12347@naver.com",
            "name": "12347@naver.com",
            "gender": "man"
        }
    ]
}

 

 

Comments