데브허브 | DEVHUB | Creating Custom Template Filters in Django!Creating Custom Template Filters in Django!
- Django 템플릿 내 복잡한 조건문이나 반복되는 로직을 재사용 가능한 단일 필터로 통합하여 코드의 간결성과 재사용성을 높입니다. 💡
- 학생 성적에 따라 동적으로 CSS 클래스를 적용하는 여러
if 문을 하나의 커스텀 필터(grade_class)로 대체하여 템플릿 코드를 대폭 간소화합니다. ✂️
- 필터 생성을 위해 Django 앱 내에
template_tags 디렉토리를 생성하고, 그 안에 __init__.py 파일과 필터 로직을 담을 Python 파일(예: css_filters.py)을 만듭니다. 📁
- 필터 파일에서
from django import template을 임포트하고 register = template.Library()를 정의한 후, @register.filter 데코레이터를 사용하여 값을 처리하는 Python 함수를 구현합니다. 🐍
- 예시에서는 성적(A, B, C, D, F)을 키로 하고 해당 성적에 맞는 Tailwind CSS 클래스 문자열을 값으로 하는 딕셔너리를 사용하여, 입력된 성적에 따라 적절한 클래스를 반환하는 로직을 구현합니다. 🗺️
- 템플릿 상단에
{% load <모듈_이름> %} (예: {% load css_filters %})을 추가하여 커스텀 필터를 로드하고, {{ 변수|필터_이름 }} (예: {{ student.grade|grade_class }}) 형식으로 적용합니다. ⚙️
template_tags 모듈을 추가하거나 수정한 후에는 변경 사항을 적용하기 위해 Django 개발 서버를 반드시 재시작해야 합니다. 🔄
- 커스텀 필터는 템플릿의 가독성 향상, 유지보수 용이성 증대, 동일한 로직을 여러 곳에서 재사용할 수 있는 높은 효율성을 제공합니다. ✨
- 향후 마크다운 렌더링을 위한 커스텀 필터 생성 등 추가적인 활용 사례를 다룰 예정입니다. 🚀