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
한페이지에 해당하는 블로그글들을 반복해서 보여줌
'기타 > Django & Web' 카테고리의 다른 글
TypeError: 'Manager' object is not callable (0) | 2021.05.20 |
---|---|
[django] 중복되는 html을 한 곳에 모아놓는 : base.html (0) | 2021.05.20 |
[django] User 확장과 인증 (0) | 2021.05.18 |
[django] django-crispy-form 설치 및 사용방법 (0) | 2021.05.16 |
[Django - Thumbnail] 섬네일 지정하기 (0) | 2021.05.11 |