○ WEB/21.02 CodeLion_Django Web
[장고 실전3] 8. 커뮤니티 : 게시글 페이지만들기
0ver-grow
2021. 4. 9. 09:31
반응형
다음처럼 입력하면 1페이지로 가도록 만들자

url?page=1은 딕셔너리 형태{page:1}로 되어있다.
메인앱 > views.py
from django.core.paginator import Paginator # 게시글목록 페이지. 객체 목록을 끊어서 보여줌 def home(request) : # 글목록 출력 # posts는 쿼리셋 객체 목록 # posts = Post.objects.filter().order_by('date') # models.py의 date 오름차순 posts = Post.objects.filter().order_by('-date') # models.py의 date 내림차순 # posts = Post.objects.all() # 게시글 목록 paginator = Paginator(posts, 5) # 게시글 5개 기준으로 자르기 pagnum = request.GET.get('page') # page(키)값의 value인 숫자값(페이지넘버)을 pagnum에 가져옴 posts = paginator.get_page(pagnum) # 페이지숫자가 get_page에 담김 return render(request, 'index.html', {'posts':posts})

여기까지 진행하면
게시글은 5개를 기준으로 다음페이지로 게시물들을 넘겨준다.
2페이지로 가려면 다음과 같이 입력해야만 한다.
url?page=2
메인앱 > index.html
이제 게시글 목록 하단에 게시글 넘버가 나타나도록 만들자.

{% if posts.has_previous %} <a href="?page=1 "> 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 %}
반응형