<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 class="page-link" href="?p={{ boards.previous_page_number }}"
>이전으로</a
>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link" href="#">이전으로</a>
</li>
{% endif %}
<li class="page-item active">
<a class="page-link" href="#"
>{{boards.number}} / {{ boards.paginator.num_pages }}</a
>
</li>
{% if boards.has_next %}
<li class="page-item">
<a class="page-link" href="?p={{ boards.next_page_number }}"
>다음으로</a
>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link disabled" href="#">다음으로</a>
</li>
{% endif %}
</ul>
</nav>
이전 페이지가 없으면 disabled속성이 되고 다음페이지나 이전 페이지를 누를 때마다 링크가 ?p={{페이지 숫자가 된다.}}
def board_list(request):
# 역순으로 게시글 가져옴
all_boards = Board.objects.all().order_by('-id')
page = request.GET.get('p', 1)
paginator = Paginator(all_boards, 2)
boards = paginator.get_page(page)
return render(request, 'board_list.html', {'boards': boards})
all_boards 는 Board모델을 아이디 순서대로 정렬하는 객체이다.
page는 아래와 같은 GET 방식 요청 URL에서 p값을 가져올 때 사용한다.
paginator는 Paginator 객체에 인자로 all_boards를 넣고 숫자 2는 2개씩 보여준다는 뜻이다.
boards는 page를 인자로 받아서paginator객체에 get_page함수를 시전한 것을 저장해서 렌더할 때 boards로 html코드를 변환에 전달한다.