TIL_231122_페이지네이션

Sol Lee·2023년 11월 22일
0

요구사항

메인페이지 - 인기순, 최신순 레시피 20개, 당장은 페이지네이션은 필요없음
검색페이지 - 기본 검색어 검색 결과 반환. 인기순, 최신순 레시피 옵션, 페이지네이션 필요

페이지네이션, 정렬

Paginator

  1. ORM Paginator import
from django.core.paginator import Paginator
  1. 쿼리로 page번호 파라미터 받기
page = request.GET.get("page")
  1. Paginator 생성하기

    paginator = Paginator(데이터셋, 페이지당 데이터 개수)
    page_obj = paginator.page(페이지번호)

# 예시 url www.test.com?page=2

recipes = ArticleRecipe.objects.all() # 페이지네이션 할 데이터셋
all_recipes_paginator = Paginator(recipes, 20) # 한 페이지당 데이터 20개 반환
page_obj = all_recipes_paginator.page(page) # page = 2

# Response = 20개씩 나눈 데이터셋중 2번째 반환

order_by

정렬 조건을 쿼리로 option 파라미터 받기

option = request.GET.get("option")

최신순

# 예시
if option == "latest": #최신순
	recipes = recipes.order_by('-created_at')

인기순(북마크 많은 순)

# 예시
if option == "bookmark": #인기순(북마크 많은 순)
recipes = recipes.annotate(bookmark_count=Count('recipe_bookmark')).order_by('-bookmark_count')  
profile
직업: 개발자가 되고 싶은 오레오 집사

0개의 댓글