[Django] 게시판 페이지 네비게이션(page navigation)
바로 가져다 쓰는 파이썬 코드
장고를 이용한 게시판 생성시 페이지 네비게이션 처리 방법을 알아 본다
1. VIEW (views.py)
장고에서 제공하는 Paginator를 사용하면 간단히 작성할 수 있다.
from django.core.paginator import Paginator # Create your views here. def board_list(request): all_boards = Board.objects.all().order_by('-id') # 게시물 전체를 얻고 page = request.GET.get('p', 1) # 현재 네비게이션 중인 페이지 번호를 얻는다. paginator = Paginator(all_boards, 2) # pagenavigator 객체를 생성한다. boards = paginator.get_page(page) # 현재 페이지에 해당하는 게시물만 얻는다.
# 템플릿(board_list.html)에 게시물 정보를 넘긴다
# boards에는 현재 네비게이션중인 정보가 함께 전달된다. return render(request, 'board_list.html', {'boards': boards})
2. TEMPLATEs (board_list.html)
* 이전 / 다음페이지가 없는 경우 예외처리 및 비활성 처리 주의
<div class="row mt-2"> <div class="col-12"> <nav> <ul class="pagination justify-content-center"> {% if boards.has_previous %} <li class="page-item"> <a href="?p={{ boards.previous_page_number }}" class="page-link">이전으로</a> </li> {% else %} <li class="page-item disabled"> <a href="#" class="page-link">이전으로</a> </li> {% endif %} <li class="page-item active"> <a href="#" class="page-link">{{ boards.number }} / {{ boards.paginator.num_pages }}</a> </li> {% if boards.has_next %} <li class="page-item"> <a href="?p={{ boards.next_page_number }}" class="page-link">다음으로</a> </li> {% else %} <li class="page-item disabled"> <a href="#" class="page-link">다음으로</a> </li> {% endif %} </ul> </nav> </div> </div>
3. 결과보기 화면(snapshot)
'프로그래밍 > Python' 카테고리의 다른 글
[Django] 장고프로젝트를 pythonanywhere.com 에 배포해보기 (0) | 2021.01.05 |
---|---|
[Django] Form에서 입력받은 ','로 구분된 문자열 파싱 하기 (0) | 2021.01.04 |
[Django] -Start-Code : 게시판 만들기 (0) | 2021.01.03 |
[Django] Template HTML 상속 (block - extends) (0) | 2021.01.03 |
[Django] Form 필드의 기본 유효성 오류 메시지 변경하기 (0) | 2021.01.03 |