현재 진행중인 프로젝트에서 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개의 값을 리턴한다.