📘 Django 페이지네이션: 점(...) 생략 표시 조건 완전 정복
Django의 Paginator를 사용할 때, 페이지가 많아지면 숫자를 모두 보여주지 않고 ... 으로 생략 처리하는 경우가 많습니다.
이번에는 앞쪽 생략 ...과 뒤쪽 생략 ... 조건 로직을 하나하나 뜯어보며 이해해봅니다.
🔹 앞쪽 생략 점(...) 처리 로직
{% if page_object.number|add:-2 > 1 %}
<a href="?page={{ page_object.number|add:-3 }}">…</a>
{% endif %}
✅ 조건 설명
- 현재 페이지 - 2 > 1 이면 앞쪽 생략 점 출력
- 즉, 현재 페이지가 4 이상일 때만 출력되어야 함
현재 페이지 조건 계산 결과
1 | -1 > 1 ❌ | 출력 안 함 |
2 | 0 > 1 ❌ | 출력 안 함 |
3 | 1 > 1 ❌ | 출력 안 함 |
4 | 2 > 1 ✅ | 출력함 |
✅ 링크 이동처리
- page={{ page_object.number|add:-3 }}
- 현재 페이지보다 3 앞쪽의 페이지로 이동
- 목적: 앞쪽 구간으로 빠르게 점프하도록 함
🔹 뒤쪽 생략 점(...) 처리 로직
{% if page_object.paginator.num_pages > page_object.number|add:2 %}
<a href="?page={{ page_object.number|add:3 }}">…</a>
{% endif %}
✅ 조건 설명
- 전체 페이지 수 > 현재 페이지 + 2 이면 뒤쪽 생략 점 출력
- 즉, 현재 페이지보다 뒤에 2개 이상 페이지가 남아있어야 함
현재 페이지 전체 페이지 수 조건 계산 출력 여부
8 | 10 | 10 > 10 ❌ | 출력 안 함 |
7 | 10 | 10 > 9 ✅ | 출력함 |
6 | 10 | 10 > 8 ✅ | 출력함 |
✅ 링크 이동처리
- page={{ page_object.number|add:3 }}
- 현재 페이지보다 3 뒤쪽의 페이지로 이동
- 목적: 뒤쪽 구간으로 빠르게 점프하도록 함
🎯 요약 비교표
구분 조건 출력 기준 점프 페이지
앞쪽 ... | page - 2 > 1 | 현재 페이지 ≥ 4 | page - 3 |
뒤쪽 ... | 전체 > page + 2 | 마지막 페이지와 간격 ≥ 3 | page + 3 |
🧠 정리
- 점(...) 생략은 사용자에게 모든 페이지를 보여주기보다는, 일정 간격마다 구간을 나누어 보여주는 UX 방식입니다.
- -2, +2 같은 수치는 조정 가능하며, 생략 기호의 유무를 자연스럽게 제어할 수 있습니다.
- page + 3, page - 3으로 점프하는 링크는 묶음 단위로 이동하기 위한 핵심 UX 요소입니다.
이제 페이지네이션 UI를 직접 만들거나 커스터마이징할 때, 조건과 이동방식을 자유롭게 설계할 수 있어요! 😉
'기술블로그-Django편' 카테고리의 다른 글
📘 URL과 Django에서의 & 사용법 + 검색 유지 페이지네이션 패턴 + Q 객체 완전 이해 (0) | 2025.05.07 |
---|---|
📘 Django 코드에서 점(.)과 언더스코어(_) 완전 정복 (0) | 2025.05.07 |
📘 Django 페이지네이션 템플릿 코드 완전 정복 (0) | 2025.05.07 |
📘 Django Paginator: get_page(함수) vs get.page(속성) 차이 완벽 정리 (0) | 2025.05.07 |
📘 Django 페이지네이션 완전 정리: Paginator와 page_object의 모든 것 (0) | 2025.05.07 |