- 이전 결과 사진을 보면 모든 값들이 다 1~10 사이로 보이는 것을 볼 수 있음.
- 게시글이 페이지마다 시작 인덱스가 1, 11, 21..처럼 페이지에 맞는 번호를 갖도록 하고자 함.
규칙
- 현재번호 = 전체건수 - 시작인덱스 - 현재 인덱스 +1
- add 뒤에 오는 변수는 - 를 붙이지 못한다
- 그래서 규칙을 구현하는 데 있어서 아래와 같은 코드가 불가능하다.
<td>{{ question_list.paginator.count|add:-question_list.start_index|add:-forloop.counter0|add:1 }}</td>
- 장고에서 add는 있는데 sub는 없어서 직접 만들어야 한다.
- sub를 만들어 준 후에 아래와 같은 코드로 적용해야 한다.
<td>{{ question_list.paginator.count|sub:question_list.start_index|forloop.counter0|add:1 }}</td>
sub 함수 만드는 방법
- 아래 폴더 위치에 pybo_filter.py를 만들어 준다.
pybo_filter.py 코드
from django import template
register = template.Library()
# A|add:5 --> A에다가 5를 더한다는 의미
# A|sub:5 --> A가 value 인자가 되고, 뒤에 5가 arg 인자가 된다.
@register.filter # register로 인식
def sub(value, arg):
return value - arg
question_list.html
- 제목이 나오는 부분 위에 번호를 출력하는 부분 수정
{% if question_list %}
{% for question in question_list %}
<tr class="text-center">
{# 현재번호 = 전체건수 - 시작인덱스 - 현재 인덱스 +1#}
{#add 뒤에는 변수가 오지 못한다. + 더하기는 있는데 빼기는 없어서 직접 만들어야 한다. #}
<td>{{ question_list.paginator.count|sub:question_list.start_index|sub:forloop.counter0|add:1 }}</td>
<td>
<a href="{% url 'pybo:detail' question.id %}">{{ question.subject }}</a>
</td>
<td>{{ question.create_date }}</td>
</tr>
{% endfor %}
{% else %}
적용된 모습
질문에 달린 답변의 개수 표시하기
- 제목 뒤에 댓글이 달린 개수를 보여주자.
question_list.html 수정
{% if question_list %}
{% for question in question_list %}
<tr class="text-center">
{# 현재번호 = 전체건수 - 시작인덱스 - 현재 인덱스 +1#}
{#add 뒤에는 변수가 오지 못한다. + 더하기는 있는데 빼기는 없어서 직접 만들어야 한다. #}
<td>{{ question_list.paginator.count|sub:question_list.start_index|sub:forloop.counter0|add:1 }}</td>
<td>
<a href="{% url 'pybo:detail' question.id %}">{{ question.subject }}</a>
{% if question.answer_set.count > 0 %}
<span class = "text-danger small mx-2">{{ question.answer_set.count }}</span>
{% endif %}
</td>
<td>{{ question.create_date }}</td>
</tr>
{% endfor %}
{% else %}
'Back > Django' 카테고리의 다른 글
6. 로그인 로그아웃 구현하기 (0) | 2023.04.20 |
---|---|
4. 게시판 페이징 기능 추가하기 (0) | 2023.04.19 |
3.5 Django 흐름 정리 (0) | 2023.04.19 |
3. 장고 부트스트랩으로 화면 꾸미기 (0) | 2023.04.19 |
2. 장고의 기본 요소 Admin, 렌더링, 동적URL매핑,DB연동 (0) | 2023.04.13 |