|
문자 뒤에 사용하는 필터번호 = 전체건수 - 시작인덱스 - 현재인덱스 + 1
|add:-3
과 같은 경우 add 필터는 인수로 숫자만 받을 수 있어 변수 적용이 안됨.1) pybo/templatetags
directory 생성 (반드시 templatetags 디렉터리는 앱 디렉터리 하위에 생성)
2) pybo/templatetags/pybo_fileter.py
from django import template
register = template.Library()
@register.filter
def sub(value, arg):
return value - arg
@register.filter
에너테이션을 적용해 템플릿에서 해당 함수를 필터로 사용1) 템플릿 상단에 필터 파일 로드
템플릿 상단에 extends문이 있으면 load문은 extends문 아래에 위치
2) question_list.html
수정
{% extends 'base.html' %}
{% load pybo_filter %}
{% block content %}
<div class="container my-3">
<table class="table">
<thead>
<tr class="table-dark">
<th>번호</th>
<th>제목</th>
<th>작성일시</th>
</tr>
</thead>
<tbody>
{% if question_list %}
{% for question in question_list %}
<tr>
<td>
<!-- 번호 = 전체건수 - 시작인덱스 - 현재인덱스 + 1 -->
{{ 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>
(... 생략 ...)
공식 | 코드 |
---|---|
전체건수 | question_list.paginator.count |
시작인덱스 | question_list.start_index |
현재인덱스 | forloop.counter0 |
[ 결과 ]
question.html 수정
(... 생략 ...)
<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>
<...>