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 |