Notice
Recent Posts
Recent Comments
Tags
- SSD 복사
- django 엑셀불러오기
- ViewData
- XSS방어
- 바코드 생성하기
- javascript 바코드 생성
- Mac Oracle
- jquery 바코드
- XSS PHP
- 강제이동
- ViewBag
- 맥 오라클설치
- 하드 마이그레이션
- jquery 바코드생성
- 바코드 스캔하기
- 하드 윈도우 복사
- 404에러페이지
- asp.net Select
- javascript 유효성체크
- php 캐쉬제거
- 파일업로드 체크
- javascript redirection
- 타임피커
- javascript 바코드스캔
- asp.net dropdownlist
- 파일업로드 유효성체크
- asp.net core Select
- ASP.Net Core 404
- TempData
- 말줄임표시
웹개발자의 기지개
[Django] Template Filter 만들기 - Custom Template Filter 본문
python/Django
[Django] Template Filter 만들기 - Custom Template Filter
http://portfolio.wonpaper.net 2023. 5. 21. 19:34사용자정의 형식의 내가 원하는 Template Filter 를 만들어보자.
필자는 우선적으로 게시판 목록의 글번호값을 구할때 이부분을 이용해 보았다.
[ filter.py ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
from django import template
register = template.Library()
@register.filter(name="decrease")
def decrease(value):
value = value - 1
return value
@register.filter(name="substract")
def substract(value, arg):
return value - arg
|
cs |
[ /board/views.py ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
def index(request):
context = {}
board_lists = Board.objects.all().order_by('-b_no')
cnt = board_lists.count()
page = request.GET.get('page')
paginator = Paginator(board_lists, 2)
try:
page_obj = paginator.page(page)
except PageNotAnInteger: # page 값이 아예 없을때
page = 1
page_obj = paginator.page(page)
except EmptyPage: # page 값은 있는데, 존재하지 않는 page 값일때
page = paginator.num_pages
page_obj = paginator.page(page)
context['board_lists'] = board_lists
context['page_obj'] = page_obj
context['paginator'] = paginator
return render(request, 'board/index.html', context)
|
cs |
[ /templates/board/index.html ] - 게시판 목록 Template 페이지
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
{% load filter %}
<table border="1" cellpadding="0" cellspacing="0" width="80%">
{% if board_lists.exists %}
{% for i in page_obj %}
<tr style="border-top:solid 1px #dddddd;">
<td width="8%" align="center">
<!-- 글번호 = 전체글수 - 시작인덱스 - 현재인덱스 + 1 -->
<!--int num = ViewBag.TotalRecord - 10 * (page1 - 1);-->
{{page_obj.paginator.count|substract:page_obj.start_index|substract:forloop.counter0|add:1}}
</td>
<td width="42%" align="left"><a href="/board/board_detail/{{ i.b_no }}/">{{ i.b_title }}</a></td>
<td width="10%" align="center">{{ i.b_writer }}</td>
<td width="20%" align="center">{{ i.b_reg_date|date:"Y-m-d" }}</td>
<td width="8%" align="center">{{ i.b_count|intcomma }}</td>
<td width="12%" align="right" style="padding:5px 0;">
<a href="/board/board_mod/{{ i.b_no }}/" class="btn btn-outline-success">수정</a>
<a href="javascript:boardDel({{ i.b_no }})" class="btn btn-outline-success">삭제</a>
</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td colspan="6" style="text-align: center;">등록된 글이 없습니다.</td>
</tr>
{% endif %}
</table>
|
cs |
위의 소스중에 10라인이 그 부분이다. substract 필터를 사용하는 부분이다.
{{page_obj.paginator.count|substract:page_obj.start_index|substract:forloop.counter0|add:1}}
글번호 = 전체글수 - 시작인덱스 - 현재인덱스 + 1
참고 : https://docs.djangoproject.com/ko/4.0/howto/custom-template-tags/
참고 : https://devlink.tistory.com/305
참고 : https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-filters
참고 : https://youngwonhan-family.tistory.com/entry/123
'python > Django' 카테고리의 다른 글
Comments