지금까지 만든 웹사이트에는 사실 한 가지 결함이 있다. 위와 같이 게시물의 번호가 페이지에 무관하게 1부터 시작한다.  정상적인 게시물의 번호는 1페이지의 맨 위의 게시물의 번호가 게시물의 총 갯수와 같으며 그 이후로 1씩 줄어야 한다.

그렇다면 게시물의 번호는 <전체 페이지 수> - <시작 인덱스> - <게시물 인덱스> + 1 이 된다. 여기서 시작 인덱스는

해당 페이지의 첫 게시물의 번호이다.  1페이지라면 시작 인덱스는 1,  2페이지라면 11이 된다.   

 

1.  템플릿 필터 작성

 게시물 번호 공식을 템플릿 코드에 적용하기 위해서는 페이징 영역의 페이지 표시범위를 전후 5 페이지 까지로

제한했을 때 처럼 | add:5 와 같은 템플릿 필터를 사용해야한다.  문제는 add 는 값으로 변수를 넘겨줄 수 없다는 것이다.

먼저 원하는 값 만큼을 뺄 수 있는 템플릿 코드를 직접 작성해보자.

 

먼저 pybo 앱 디렉터리 하위에 템플릿 필터 파일을 저장할 templatetags 디렉터리를 생성한다.

 

생성한 디렉터리에 pybo_filter.py 파일을 생성한 뒤 위와 같이 작성한다.  데코레이터 @register.filter 를 추가하는 것으로

sub 함수를 필터로 추가할 수 있다.

 

 

2. 템플릿 필터 적용

이제 question_list.html 에서 위와 같이 pybo_filter 파일을 추가하고 sub 태그와 add 태그를 사용하여 게시물 번호를

미리 구해둔 공식에 따라 계산해준다. 

 

사이트에 접속해보면 정상적으로 게시물 번호 오류가 수정된 것을 확인할 수 있다.

'개인 프로젝트 > Django-mysite' 카테고리의 다른 글

#18 로그인/로그아웃  (0) 2021.09.30
#17 답글 갯수 표시  (0) 2021.09.28
#15 페이징  (0) 2021.09.24
#14 내비게이션 바  (0) 2021.09.24
#13 데이터 저장 2  (0) 2021.09.23

+ Recent posts