웹 페이지 게시글 번호 지정하는 공식(스프링 부트, 장고)

2024. 9. 4. 12:48·Note/nk
728x90

아래는 스프링 부트와 장고에서 게시물 번호를 계산하는 코드를 각각 비교한 것입니다. 코드를 보시면 같은 논리를 다르게 구현한 방식이라는 것을 알 수 있습니다.

1. 스프링 부트 (Thymeleaf)

<td th:text="${paging.getTotalElements - (paging.number * paging.size) - loop.index}"></td>

설명:

  • paging.getTotalElements: 전체 게시물 수
  • paging.number: 현재 페이지 번호 (0부터 시작)
  • paging.size: 페이지당 게시물 수
  • loop.index: 현재 페이지 내에서 게시물의 순서 (1부터 시작)
전체 게시물 수 - (현재 페이지 * 페이지당 게시물 수) - 현재 페이지 내 인덱스

이 공식은 전체 게시물 수에서 현재 페이지의 첫 번째 게시물 번호와 현재 페이지 내에서의 인덱스를 빼서 게시물 번호를 역순으로 계산합니다.

 

2. 장고 (Django)

<td>{{ question_list.paginator.count|sub:question_list.start_index|sub:forloop.counter0|add:1 }}</td>

설명:

  • question_list.paginator.count: 전체 게시물 수
  • question_list.start_index: 현재 페이지에서 첫 번째 게시물의 인덱스
  • forloop.counter0: 현재 페이지 내에서 게시물의 순서 (0부터 시작)
전체 게시물 수 - 시작 인덱스 - 현재 인덱스 + 1

여기서 forloop.counter0는 0부터 시작하므로, 최종 계산에 +1을 해줘야 합니다. 이 공식도 마찬가지로 전체 게시물 수에서 현재 페이지의 첫 번째 게시물 번호와 현재 페이지 내에서의 인덱스를 빼서 게시물 번호를 계산합니다.


비교

  • 스프링 부트에서는 paging.number * paging.size로 현재 페이지의 첫 번째 게시물 번호를 구하고, loop.index로 현재 인덱스를 가져와 빼기 연산을 수행합니다.
  • 장고에서는 question_list.start_index를 통해 현재 페이지의 첫 번째 게시물 인덱스를 직접 구하고, forloop.counter0로 현재 인덱스를 가져와 빼기 연산을 수행합니다.

결론적으로, 두 방식은 동일한 로직을 기반으로 하고 있으며, 각각의 프레임워크에서 사용하는 변수와 템플릿 문법에 따라 약간의 차이가 있을 뿐입니다.

728x90

'Note > nk' 카테고리의 다른 글

<form> 태그에서 action 속성을 지정하지 않는다면?  (0) 2024.09.06
principal 객체  (0) 2024.09.05
GET 방식 값 전달  (1) 2024.09.03
웹 개발에서의 페이징  (1) 2024.09.03
POST  (0) 2024.09.02
'Note/nk' 카테고리의 다른 글
  • <form> 태그에서 action 속성을 지정하지 않는다면?
  • principal 객체
  • GET 방식 값 전달
  • 웹 개발에서의 페이징
Corinee
Corinee
  • Corinee
    Coding Note
    Corinee
  • 전체
    오늘
    어제
    • 분류 전체보기 (351)
      • Category (268)
        • Algorithm (7)
        • SQL (1)
        • Java (4)
        • C (9)
        • React (6)
        • JavaScript (9)
        • CSS (2)
        • Node (1)
        • SpringBoot (26)
        • Database (3)
        • Network (1)
        • Django (6)
        • Python (21)
        • Flask (4)
        • iOS (25)
        • Swift (4)
        • Flutter (11)
        • Dart (3)
        • Git (1)
        • Firebase (1)
        • Gof (1)
        • 정보처리기사 (112)
        • AI (5)
        • NestJs (4)
        • Docker (1)
      • Projects (0)
        • Chrome Extension (1)
      • 눈 감고 치는 (0)
        • Socket (0)
      • Note (76)
        • nk (75)
      • 개인 정보 처리 방침 (1)
      • 취업 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    x.y.z (메이저.마이너.패치)
    javascript 필수 문법
    intellij 콘솔 한글 깨짐
    mermaid-cli
    jackson 라이브러리
    Collections
    시맨틱 버전(semantic versioning
    useEffect
    프로세스 강제 종료
    math.h
    chrome extension 자동 배포
    inp
    defaultdict
    중첩 함수(nested function)
    structuredclone()
    semver)
    ajax (asynchronous javascript and xml)
    원시값(primitive)
    json.parse(json.stringify())
    public vs assets
    react
    react router
    core web vitals
    소프트웨어 버전 관리
    styled-components
    named export vs default export
    stdlib.h
    counter
    쉽게 풀어쓴 C언어 Express
    Jest
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Corinee
웹 페이지 게시글 번호 지정하는 공식(스프링 부트, 장고)
상단으로

티스토리툴바