📘 Django 페이지네이션: 점(...) 생략 표시 조건 완전 정복

2025. 5. 7. 17:36·기술블로그-Django편

📘 Django 페이지네이션: 점(...) 생략 표시 조건 완전 정복


Django의 Paginator를 사용할 때, 페이지가 많아지면 숫자를 모두 보여주지 않고 ... 으로 생략 처리하는 경우가 많습니다.
이번에는 앞쪽 생략 ...과 뒤쪽 생략 ... 조건 로직을 하나하나 뜯어보며 이해해봅니다.


🔹 앞쪽 생략 점(...) 처리 로직

{% if page_object.number|add:-2 > 1 %}
    <a href="?page={{ page_object.number|add:-3 }}">&hellip;</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 }}">&hellip;</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
'기술블로그-Django편' 카테고리의 다른 글
  • 📘 URL과 Django에서의 & 사용법 + 검색 유지 페이지네이션 패턴 + Q 객체 완전 이해
  • 📘 Django 코드에서 점(.)과 언더스코어(_) 완전 정복
  • 📘 Django 페이지네이션 템플릿 코드 완전 정복
  • 📘 Django Paginator: get_page(함수) vs get.page(속성) 차이 완벽 정리
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (787)
      • Python (32)
      • 프로젝트 (110)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    newpoliticalparty
    americanlaw
    smartphonedurability
    self-growth
    youngprofessionals
    trumpmuskclash
    americaparty
    basalcellcarcinoma
    chinanightlife
    titaniumcase
    bts
    livebroadcast
    classaction
    life reflection
    chatgpterror
    lawsuitculture
    college reunions
    gpterror
    btscomeback
    remittance
    btsdischarge
    btsjungkook
    homebartrend
    urbantrends
    뷔
    travel ban
    RM
    global politics
    btsreunion
    hotcoffeecase
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
📘 Django 페이지네이션: 점(...) 생략 표시 조건 완전 정복
상단으로

티스토리툴바