0. Pagination이란?
게시판이나 블로그처럼 객체가 많은 경우, 페이지로 나누어 보여주는 것이 보기도 좋고 사용하기 편하다.
2021.06.23 - [웹프로그래밍/Django] - 클래스형 뷰를 사용한 CRUD
1. Pagination 구현
#views.py
class BookmarkListView(ListView):
model = Bookmark
paginate_by = 3 #객체 3개가 한 페이지
https://getbootstrap.com/docs/5.0/components/pagination/ 에서 Alignment 즉 중앙 배치된 경우를 복사해서 사용하겠습니다.
<!--bookmark_list.html의 </table>태그 바로 아래에 추가해주기-->
{% block pagination %}
<!-- 페이지기능입니다. -->
{% if is_paginated %}
<!-- 페이지 기능을 사용할 조건이 된다면 -->
<ul class="pagination justify-content-center">
<!-- 이전페이지 돌아가기 -->
{% if page_obj.has_previous %}
<!-- 이전페이지 객체가 있으면 [Previous]버튼 활성화 -->
<li class="page-item">
<a class="page-link" href="{% url 'list' %}?page={{page_obj.previous_page_number}}" tabindex="-1">Previous</a>
</li>
{% else %}
<!-- 이전페이지 객체가 없으면 [Previous]버튼 비활성화 (= 안눌리도록 함) -->
<li class="page-item disabled">
<a class="page-link" href="#" tabindex="-1">Previous</a>
</li>
{% endif %}
<!-- 페이지를 번호로 출력 -->
{% for object in page_obj.paginator.page_range %}
<!-- 현재 선택한 페이지 번호는 비활성화시킨다. -->
<li class="page-item {% if page_obj.number == forloop.counter %} disabled {% endif %}">
<a class="page-link" href="{{request.path}}?page={{forloop.counter}}">{{forloop.counter}}</a>
</li>
{% endfor %}
<!-- 다음페이지로 가기 -->
{% if page_obj.has_next %}
<!-- 이전페이지 객체가 있으면 [Next]버튼 활성화 -->
<li class="page-item">
<a class="page-link" href="{% url 'list' %}?page={{page_obj.next_page_number}}">Next</a>
</li>
{% else %}
<!-- 이전페이지 객체가 없으면 [Next]버튼 비활성화 -->
<li class="page-item disabled">
<a class="page-link" href="#">Next</a>
</li>
{% endif %}
</ul>
{% endif %}
{% endblock %}
2. 결과 화면
'Programming > Django' 카테고리의 다른 글
클래스형 뷰를 사용한 CRUD(1)-CRUD 구현 (0) | 2021.06.23 |
---|---|
Django 입력 받기 (0) | 2021.05.31 |
Django API 서버 만들기 (0) | 2021.04.13 |
REST API 서버 - 기본 세팅 (0) | 2021.04.11 |
로그인&로그아웃 (0) | 2020.08.26 |