paginator
페이지네이터를 사용하려면 views.py에서 import를 해야와야 한다.
from django.core.paginator import Paginator
메소드
xPaginator(객체,숫자)
한 페이지에 숫자 만큼을 표현하고 잘라줌
page = request.GET.get('page')
요청된 페이지가 뭔지를 알아냄
paginaotr.get_page(page)
요청된 페이지를 얻어낸뒤 리턴한다
아래서 나오는 posts는 단순한 변수명임
{%if posts.has_previous%}
현재 페이지를 기준으로 이전페이지가 있는지의 여부
<a href="?page=1">First</a>
첫번째 화면으로 돌아가는 것
<a href="?page={{posts.previous_page_number}}">Previous</a>
현재 페이지 기준으로 이전페이지 넘어 가는 것
{{posts.number}}
현재 페이지 번호를 의미
{{posts.paginator.num_pages}}
posts객체의 전체 페이지 갯수
{%if posts.has_next%}
현재 페이지 기준으로 다음 페이지가 있는지 체크
{{posts.next_page_number}}
현재 페이지의 다음페이지
{{posts.paginator.num_pages}}
전체 페이지 갯수
바뀐 views.py
def home(request):
form = Form.objects
# 블로그 객체의 모든 글 대상으로
form_list = Form.objects.all()
# 블로그 객체를 3개씩 나눔
paginator = Paginator(form_list,3)
# request 된 페이지가 어떤건지 얻어낸다
page = request.GET.get('page')
# request 된 페이지를 얻어 낸 뒤 return 해준다
posts = paginator.get_page(page)
return render(request, 'home.html',{'form':form,'posts':posts})
바뀐 home.html
{% extends 'header.html'%}
{% block contents%}
{% for i in posts%}
<div class="card" style="width: 80rem;">
<div class="card-body">
<h5 class="card-title">{{i.title}}</h5>
<h6 class="card-subtitle mb-2 text-muted">{{i.pub_date}}</h6>
<p class="card-text">{{i.summary}}</p>
<a href="{% url 'home'%}" class="card-link">돌아가기</a>
<a href="{% url 'detail' i.id%}" class="card-link">자세히 보기</a>
</div>
</div>
<br><br>
{% endfor %}
{%if posts.has_previous%}
<a href="?page=1">First</a>
<a href="?page={{posts.previous_page_number}}">Previous</a>
{%endif%}
<span>{{posts.number}}</span>
<span>of</span>
<span>{{posts.paginator.num_pages}}</span>
{%if posts.has_next%}
<a href="?page={{posts.next_page_number}}">Next</a>
<a href="?page={{posts.paginator.num_pages}}">Last</a>
{%endif%}
{% endblock %}
'Django' 카테고리의 다른 글
12. 로그인,로그아웃,회원가입 (0) | 2020.05.11 |
---|---|
11. 상속 (0) | 2020.03.25 |
10. static과 media (0) | 2020.03.25 |
09 BlogProject(2) (0) | 2020.03.23 |
08 BlogProject (1) (0) | 2020.03.23 |