Project1 - Pagination

Heechul Yoon·2020년 3월 5일
0

LOG

목록 보기
24/62

현재 진행중인 프로젝트에서 query parameter을 받아서 페이지 기능을 구현해보자.

class ProductView(View):
    def get(self, request):
        offset   = int(request.GET.get('offset', 0))      [1]
        limit    = offset + 12                            [2]

우선 [1]에서와 같이 쿼리파라미터로 GET객체로 들어올 값의 key인 offset을 가져오고 값이 없으면 0을 default로 한다.

한페이지에 12개의 상품을 보여줘야하기 때문에 들어온 값에 12를 더한 값을 limit으로 지정한다.

        product_info = Product.objects.select_related('harvest_year', 'measure').order_by('id').values(
                'name',
                'id',
                'price',
                'small_image',
                'harvest_year__year',
                'measure_id__measure',
                'is_on_sale',
                'is_in_stock',
        )[offset:limit]

가져온 value값에 설정해준 offset(시작 값)과 limit(끝 값)을 넣어준다. 만약 offset이 쿼리파라미터로 들어오지 않을 경우 메인페이지를 호출하는것으로 받아들여야 하기 때문에 offset변수의 default값인 인 0부터 끝값이 12까지 value가 리턴된다.

2페이지를 요청하고싶다면 offset에 12를 넣어준다.

위와같이 offset에 12를 넣어주면 13부터 12개의 값을 리턴한다.

profile
Quit talking, Begin doing

0개의 댓글