Django 템플릿 필터는 템플릿에서 데이터를 출력할 때 다양한 변형이나 처리를 할 수 있도록 도와주는 기능입니다. 필터는 출력하고자 하는 변수에 파이프(|) 기호를 사용하여 적용할 수 있으며, 값을 변형하거나 포맷을 변경하는 데 주로 사용됩니다.
예를 들어, 템플릿에서 날짜 형식을 지정하거나 문자열을 소문자로 변환하는 등의 작업을 할 때 필터를 사용합니다.
템플릿 필터의 기본 사용법
템플릿에서 필터는 다음과 같은 형식으로 사용됩니다:
{{ 변수명|필터명 }}
필터는 여러 개를 중첩하여 사용할 수도 있습니다:
{{ 변수명|필터1|필터2 }}
주요 템플릿 필터 종류
Django에서 자주 사용하는 템플릿 필터는 다음과 같습니다:
1. date
날짜 및 시간 객체를 원하는 형식으로 변환합니다.
{{ some_date|date:"Y-m-d" }} <!-- 2024-01-01 -->
2. length
리스트나 문자열의 길이를 반환합니다.
{{ my_list|length }} <!-- 리스트의 항목 개수 -->
{{ my_string|length }} <!-- 문자열의 문자 개수 -->
3. lower / upper
문자열을 소문자(lower) 또는 대문자(upper)로 변환합니다.
{{ my_string|lower }} <!-- 문자열을 소문자로 -->
{{ my_string|upper }} <!-- 문자열을 대문자로 -->
4. truncatechars
주어진 문자 수만큼 문자열을 자르고, 뒤에 '...'을 추가합니다.
{{ my_string|truncatechars:10 }} <!-- 문자열을 10자까지만 보여줌 -->
5. default
변수의 값이 None일 경우 기본값을 설정합니다.
{{ my_value|default:"기본값" }}
6. join
리스트를 특정 구분자로 연결된 문자열로 변환합니다.
{{ my_list|join:", " }} <!-- 리스트의 항목을 ", "로 연결 -->
7. cut
문자열에서 특정 문자열을 제거합니다.
{{ my_string|cut:" " }} <!-- 문자열에서 공백 제거 -->
8. escape
HTML 태그나 특수 문자를 이스케이프하여 웹 페이지에서 안전하게 표시되도록 합니다.
{{ my_html_content|escape }} <!-- HTML 태그를 이스케이프 처리 -->
9. safe
이 필터는 문자열을 HTML로 렌더링할 수 있도록 허용합니다. 이 경우 escape와 반대로 작동합니다. 이 필터를 사용할 때는 사용자 입력을 허용하지 않도록 주의해야 합니다.
{{ my_html_content|safe }} <!-- HTML이 렌더링될 수 있도록 허용 -->
10. linebreaks
문자열에 포함된 줄 바꿈(\n)을 HTML <br> 태그로 변환합니다.
{{ my_string|linebreaks }}
11. pluralize
숫자의 값에 따라 복수형을 출력할 수 있습니다.
{{ my_value|pluralize }} <!-- 기본: s -->
{{ my_value|pluralize:"ies" }} <!-- 복수형에 따라 'ies' 추가 -->
12. yesno
Boolean 값을 사람이 이해할 수 있는 텍스트로 변환합니다.
{{ is_active|yesno:"예,아니오" }}
예시
아래는 다양한 템플릿 필터를 활용한 예시입니다:
<p>오늘의 날짜: {{ today|date:"Y-m-d" }}</p>
<p>리스트의 길이: {{ my_list|length }}</p>
<p>원본 문자열: {{ my_string }}</p>
<p>소문자 변환: {{ my_string|lower }}</p>
<p>대문자 변환: {{ my_string|upper }}</p>
<p>10자만 출력: {{ my_string|truncatechars:10 }}</p>
<p>기본값: {{ my_value|default:"없음" }}</p>
사용자 정의 필터
기본 제공되는 필터 외에도 직접 커스텀 필터를 정의할 수 있습니다. templatetags 디렉터리를 만들고, 그 안에 커스텀 필터를 정의하여 사용할 수 있습니다.
예를 들어, 소문자를 대문자로 변환하는 사용자 정의 필터:
templatetags/custom_filters.py 파일 생성:
from django import template
register = template.Library()
@register.filter(name='my_custom_upper')
def my_custom_upper(value):
return value.upper()
템플릿에서 사용:
{% load custom_filters %}
<p>{{ some_string|my_custom_upper }}</p>
정리
- 템플릿 필터는 출력값을 변형하거나 포맷을 지정할 때 사용합니다.
- | 기호를 사용하여 템플릿 변수에 필터를 적용할 수 있습니다.
- 장고 기본 제공 필터 외에도 사용자 정의 필터를 생성할 수 있습니다.
Django 템플릿 필터를 활용하면 출력 데이터를 유연하게 다룰 수 있어, 더 나은 사용자 경험을 제공합니다.
'Category > Django' 카테고리의 다른 글
django-environ란? (0) | 2024.09.16 |
---|---|
WSGI(웹 서버 게이트웨이 인터페이스, Web Server Gateway Interface)란? (1) | 2024.09.15 |
Paginator란? (0) | 2024.09.13 |
장고(Django) 역참조를 위한 '모델명_set' (0) | 2024.09.11 |
장고(Django) 마이그레이션이 필요한 경우와 필요 없는 경우 (0) | 2024.09.11 |