[django] django 페이지네이션 기능
🌱페이지네이션
장고에서 페이지네이션 기능만들기! 템플릿에는 부트스트랩 pagination 컴포넌트를 사용하였다!
#views.py
def business_list(request):
business_list = Business.objects.all().order_by('-id') #데이터 역순 정렬
page = request.GET.get('page', '1') #GET 방식으로 정보를 받아오는 데이터
paginator = Paginator(business_list, '2') #Paginator(분할될 객체, 페이지 당 담길 객체수)
paginated_business_lists = paginator.get_page(page) #페이지 번호를 받아 해당 페이지를 리턴
ctx = {'business_list':business_list,'paginated_business_lists':paginated_business_lists}
return render(request, template_name='list.html', context=ctx)
여기서 페이징 객체인 paginated_business_lists 에는 다양한 속성이 있다.
더 많은 속성은 여기
#templates
<div class="board-pagination">
<ul class="pagination">
<!-- 이전페이지 -->
{% if paginated_business_lists.has_previous %} //이전페이지가 있으면 연결
<li class="page-item">
<a class="page-link" tabindex="-1" href="?page={{ paginated_business_lists.previous_page_number }}">«</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link" href="#">«</a>
</li>
{% endif %}
<!-- 페이지리스트 -->
{% for page_number in paginated_business_lists.paginator.page_range %} //페이지 범위를 하나씩 리턴
{page.number}}
// 현재 페이지일 때는 active
{% if page_number == paginated_business_lists.number %}
<li class="page-item active" aria-current="page">
<a class="page-link" href="?page={{ page_number }}">{{ page_number }}</a>
</li>
{% else %}
<li class="page-item">
<a class="page-link" href="?page={{ page_number }}">{{ page_number }}</a>
</li>
{% endif %}
{% endfor %}
<!-- 다음페이지 -->
{% if paginated_business_lists.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ business_lists.next_page_number }}">»</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link" tabindex="-1" href="#">»</a>
</li>
{% endif %}
</ul>
</div>
{{paginated_business_lists.paginator.page_range}}로 전체 페이지 범위(1,2,3)를 받고 페이지를 하나씩 리턴한다. 현재페이지가 1페이지라 active상태이다.
Author And Source
이 문제에 관하여([django] django 페이지네이션 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@soy0830/django-django-페이지네이션-기능저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)