Python/Django Framework
[Python Django] 3-5. CBV ListView에 Pagination 적용
Jake the Dog
2022. 3. 26. 09:47
반응형
view.py 수정
# board/templates/board_list.html
class BoardListView(ListView):
model = Board
template_name = "board_list.html"
context_object_name = "board_list"
ordering = "-id"
paginate_by = 5 # 옵션추가: 한 페이지당 5개의 게시물
paginate_orphans = 1 # 옵션추가: 마지막 페이지가 1개일 경우 직전 페이지에 연결
page_kwarg = "p" # 옵션추가: 파라미터값을 page > p 변경
board_list.html 수정
- 이전 페이지 / 현재 페이지 번호 / 총 페이지 개수 / 다음 페이지로 구성된 Pagination이 생성됩니다
# board/templates/board_list.html
<div>
<nav>
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?p={{ page_obj.previous_page_number }}">«</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link" href="javascript:return false">«</a>
</li>
{% endif %}
<li class="page-item active">
<a class="page-link" href="javascript:return false">
{{ page_obj.number }} / {{ page_obj.paginator.num_pages }}
</a>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?p={{ page_obj.next_page_number }}">»</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link" href="javascript:return false">»</a>
</li>
{% endif %}
</ul>
</nav>
</div>
반응형