기타/Django & Web

[django] Pagination

yujindonut 2021. 5. 18. 01:20
728x90

Blog의 문제는? 글들이 몇개인지 상관없이, 아래에 덧붙여짐

 

글을 적당히 끊어주는 작업이 필요하다!

 

next를 누를 때 /?page = 1 , ?/page = 2이런식으로 pagination을 사용!

 

M,T,V,url

Template, views.py를 건드려줘야함


views.py 

from django.core.paginator import Paginator

1. 무슨 객체를, 한페이지 당 몇개씩 Pagination시킬 것인지 결정

2. 페이지 단위로 잘랐다면, 이젠 (전체 데이터가 아닌) 페이지를 한 단위로 갖고 놀기

 

페이지네이션 하기 전 데이터 뭉치 ->

무슨 객체를 한페이지당 몇개씩 실을 것인지 결정 : Paginator(object, 한페이지당 몇 개씩)함수 사용 ->

내가 원하는 페이지 갖고오기 : .get_page(갖고오고싶은 페이지번호) 함수 사용->

내가 원하는 페이지를 html에 띄우기 : Page 객체의 매소드 함수 + template언어

 

Paginator Class VS Page Class

Paginator : 여러개의 페이지들 뭉텅이

Page : 하나의 페이지 (최종 목적 : 얻고자 하는 것 : Paginator를 이용해서 가져오는 것) 

 

Request 적당한 페이지번호를 어떻게 알까?

 

request객체는 사용자가 보낸 총체적인 정보를 담고 있다.

request.GET request중에서 GET방식으로 보낸 내용을 지칭

request.GET.get() : (딕셔너리형에 대해) key값을 인자로 주면 value반환 

 

request.GET은 딕셔너리 자료형이다

url : www.google.com?thisisAGetVarKey =3&thisIsAnotherOne=hello

request.GET

{"thisisAGetVarKey":3,"thisIsAnotherOne":hello}

url : 127.0.0.1:8000/?page=2 

request.GET

{"page":2} key값은 'page', value는 2(페이지번호)

 

page = request.GET.get('page')

==>request.GET중 page를 key값으로 하는 value(페이지번호)를 반환하여, page변수에 담아라

 

페이지를 실제로 갖고오기

paginator.get_page(page)

 


Paginator를 생성하기 위해서?

views.py와 home.html만 건드리면 된다

 

views.py


원래의 home.html ->blogInfo는 전체의 페이지를 도는 것! 지금은 잘라진 페이지 하나만 돌아야함

home.html

한페이지에 해당하는 블로그글들을 반복해서 보여줌

 

 

728x90