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 }}">&laquo;</a>
                </li>
            {% else %}
                <li class="page-item disabled">
                    <a class="page-link" href="javascript:return false">&laquo;</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 }}">&raquo;</a>
                </li>
            {% else %}
                <li class="page-item disabled">
                    <a class="page-link" href="javascript:return false">&raquo;</a>
                </li>
            {% endif %}
        </ul>
    </nav>
</div>
 
반응형