본문 바로가기
Category/Django

Django(장고) 템플릿 필터란?

by Corinee 2024. 9. 13.
728x90
반응형

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 템플릿 필터를 활용하면 출력 데이터를 유연하게 다룰 수 있어, 더 나은 사용자 경험을 제공합니다.