Notice
Recent Posts
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- network
- 내일배움캠프
- 코딩교육
- vscode
- 웹프로그래밍A-Z기초
- 머신러닝
- JavaScript
- 스파르타코딩클럽
- 장고
- musicbot
- 페이지네이션
- MySQL
- 기초문법
- Django
- paginator
- cs
- 파이썬
- Wil
- 파이널프로젝트
- 선형회귀
- 스파르타코딩클럽후기
- 디스코드봇
- 터미널
- git
- error
- orm
- HTML
- Model
- predict
- Python
- Today
- Total
lution88
[TIL] Django-Paginator 기능구현 본문
페이지네이션이란?
한 페이지에 데이터가 너무 많은 경우 일정 길이로 나누어서 전달하는 기능이다!
Django에서는 페이지네이션 기능을 간편하게 구현할 수 있도록 기능을 제공하고 있기 때문에 쉽게 기능을 구현할 수 있다.
Paginator 는 총 두 개의 파라미터만 넘겨주면 된다.
1) 각각의 페이지로 나뉘게 될 데이터의 목록
2) 한 페이지에 보여줄 데이터의 수
paginator 구현해 보기
1. Views.py 작성
# Paginator 과 Model Import 하기
from django.core.paginator Import Paginator
from .models import Post
# 페이지네이션 구현을 위해 모델을 이용해서 데이터를 가져온다.
def post_list(request):
posts = Post.objects.all()
# 페이지네이션(적용할 데이터목록 posts, 한 페이지에 보여줄 데이터 개수 8) 정의
paginator = Paginator(posts, 8)
# 쿼리스트링의 page를 이용해서 페이지 번호 뽑아오기
page_num = request.GET.get('page')
# 뽑아온 페이지 번호에 해당하는 페이지를 가져와서 template로 렌더해 줍니다.
page = paginator.page(page_num)
return render(request, 'post_list.html', {'page':page})
2. Templates 작성
- View에서 넘어온 Page를 이용해서 화면을 구성합니다.
# 넘어온 page 의 모든 데이터를 표시할 때는 object_list 를 사용합니다.
{% for post in page.object_list %}
<p> post로 부터 조회한 데이터 </p>
<p> {{ post.title }} </p>
{% endfor %}
- 이전페이지, 다음페이지로 가는 오브젝트들도 page가 제공하는 메소드를 이용해서 구현해 줍니다!
- 페이지네이션에서의 링크 이동은 ?page={{number}} 를 통한다.
# 만약 page 에 이전페이지가 있다면
{% if page.has_previous %}
<a href="?page=1">first</a>
<a href="?page={{page.previous_page_number}}">previous</a>
# 이전페이지번호 previous_page_number
{% endif %}
# 현재 페이지 나타내기
<span>
# page.number 현재페이지번호 | page.paginator.num_pages 페이지네이션 전체 페이지수
{{page.number}} of {{page.paginator.num_pages}}
</span>
# 만약 다음 페이지가 있다면
{% if page.has_next %}
# 다음 페이지로 이동
<a href="?page={{page.next_page_number}}">next</a>
# 마지막 페이지로 이동
<a href="?page={{page.paginator.num_pages}}">last</a>
{% endif %}
'개발일지 > # Django' 카테고리의 다른 글
[Django] _set 의 사용 (역참조) (0) | 2022.03.27 |
---|---|
[TIL] 카테고리 검색기능 만들기 (0) | 2022.03.25 |
[TIL] Django 템플릿 언어 글자수 제한 (0) | 2022.03.07 |
[TIL] 220202 django-Model 이해하기, ORM (0) | 2022.02.02 |
[Django] CSRF 방지 (0) | 2022.01.29 |
Comments