ACHO.pk devlog

[멋쟁이사자처럼10기] Django 개발자 대나무숲 프로젝트(Pagination) 본문

멋쟁이사자처럼

[멋쟁이사자처럼10기] Django 개발자 대나무숲 프로젝트(Pagination)

Acho 2022. 7. 14. 21:04

 

pagination

게시판에서 한 페이지 단위로 글의 목록을 끊어서 보여주는 것

  • ~~~~/?page=1
  • ~~~~/?page=2
  • ~~~~/?page=3

snsapp/views.py

  • home 함수에 이 코드를 작성하는 이유는 index.html이 게시판이기 때문이다. ( 익명 게시판 )
from django.core.paginator import Paginator		#개체들의 목록을 끊어줌

def home(request):
    # posts = Post.objects.all()
    posts = Post.objects.filter().order_by('-date')
    
    #개체들의 목록을 5개 단위로 끊음
    paginator = Paginator(posts, 5)
    pagenum = request.GET.get('page')
    
    #get_page에 페이지 숫자가 저장되고, posts에 개체를 5개 단위로 자른 것이 저장된다.
    posts = paginator.get_page(pagenum)
    
    return render(request, 'index.html', {'posts':posts})

 


목록 넘어가는 링크 남기기

index.html

  • posts 객체들의 목록이 이전 페이지(has_previous)가 존재한다면, posts 객체가 가지고 있는 이전 페이지의 숫자(previous_page_number)가 반환된다.
  • posts 객체들의 목록이 다음 페이지(has_next)가 존재한다면, posts 객체가 가지고 있는 다음 페이지의 숫자(next_page_number)가 반환된다.
<!--페이지네이션-->
{% if posts.has_previous %}
<a href = "?page=1">첫 페이지</a>
<a href = "?page={{posts.previous_page_number}}">이전 페이지</a>
{% endif %}

<span>{{ posts.number }}</span>
<span> / </span>
<span>{{ posts.paginator.num_pages }}</span>		<!--총 페이지 수-->

{% if posts.has_next %}
<a href = "?page={{ posts.next_page_number }}">다음 페이지</a>
<a href = "?page={{ posts.paginator.num_pages }}">마지막 페이지</a>
{% endif %}

 

페이지 넘어가기

 

Comments