Django 템플릿 태그 활용법 총정리
Django로 웹 페이지를 만들어본 적이 있다면 {% for %}
나 {% if %}
같은 템플릿 태그를 사용해보셨을 겁니다. 처음에는 단순해 보일 수 있지만, Django의 템플릿 언어는 제대로 활용하면 굉장히 강력한 기능을 제공합니다. 내장 태그부터 커스텀 태그까지 활용하면 정적인 템플릿을 지능적이고 동적인 구성으로 탈바꿈시킬 수 있습니다.
서론
Django 템플릿 태그는 HTML 템플릿의 로직 계층 역할을 합니다. 루프, 조건부 출력, 컨텍스트 변수 접근, 필터 및 정적 파일 불러오기 등 다양한 기능을 지원하며, 템플릿 내부에 파이썬 코드를 작성하지 않고도 논리적인 처리를 할 수 있습니다.
이 글에서는 자주 사용하는 내장 태그부터 실전 활용 사례, 그리고 고급 기능인 커스텀 태그까지 모두 다뤄봅니다.
1. 꼭 알아야 할 핵심 내장 태그
모든 Django 개발자가 익숙해져야 할 기본 태그는 다음과 같습니다:
{% if %}
/{% elif %}
/{% else %}
: 조건 분기{% for item in list %}
: 리스트 반복{% include "template.html" %}
: 템플릿 재사용{% load static %}
: 정적 파일 불러오기 (CSS, JS 등){% block content %}
/{% extends "base.html" %}
: 템플릿 상속
예시:
{% if user.is_authenticated %}
<p>환영합니다, {{ user.username }}님!</p>
{% else %}
<p>로그인이 필요합니다.</p>
{% endif %}
이러한 태그를 활용하면 컴포넌트를 재사용하고, 템플릿의 흐름을 유연하게 제어할 수 있습니다.
2. 필터 및 with 태그 활용
템플릿 필터는 변수를 수정할 때 사용됩니다. 예: {{ name|upper }}
는 텍스트를 대문자로 변환합니다.
유용한 필터 예시:
|length
,|lower
,|date
,|default
,|truncatechars
- 필터 조합도 가능:
{{ title|truncatechars:30|upper }}
{% with %}
태그는 긴 변수명을 단축해서 코드 가독성을 높여줍니다:
{% with user.profile as profile %}
{{ profile.bio }}
{% endwith %}
필터와 with 태그를 적절히 사용하면 템플릿을 깔끔하고 읽기 쉽게 유지할 수 있습니다.
3. {% url %}과 {% static %}으로 링크 및 정적 파일 처리
Django 템플릿은 URL 라우팅 시스템과 잘 통합되어 있습니다. {% url %}
을 사용해 링크를 동적으로 생성할 수 있습니다:
<a href="{% url 'blog:post_detail' post.slug %}">{{ post.title }}</a>
정적 파일(CSS, JS, 이미지 등)은 {% static %}
을 사용해 접근하며, 먼저 로드해야 합니다:
{% load static %}
<link rel="stylesheet" href="{% static 'css/styles.css' %}">
경로를 하드코딩하지 않고 {% url %}
, {% static %}
을 사용하는 습관은 유지보수성과 안정성을 높여줍니다.
4. 커스텀 템플릿 태그 만들기
내장 태그만으로 부족할 경우, 커스텀 템플릿 태그를 만들어 복잡한 로직을 처리할 수 있습니다.
앱 안에 templatetags/
폴더를 만들고 파이썬 파일을 생성합니다:
# myapp/templatetags/extras.py
from django import template
register = template.Library()
@register.simple_tag
def greet(name):
return f"안녕하세요, {name}!"
템플릿에서 이렇게 불러옵니다:
{% load extras %}
<p>{% greet "Django" %}</p>
커스텀 태그는 포맷팅, 권한 체크, 커스텀 위젯 렌더링 등 반복적인 로직을 깔끔하게 캡슐화할 수 있습니다.
5. 템플릿 태그 사용 시 베스트 프랙티스
- 로직은 최소화: 템플릿은 표현용, 비즈니스 로직은 Python 코드에서 처리
- block과 extends로 중복 제거
- 중첩 if 안의 for는 피하거나 최소화
- 간단한 변환은 복잡한 태그보다 필터 사용
{% comment %}
를 활용해 디버그용 주석 삽입
구조화된 템플릿은 유지보수가 쉬우며, 프론트엔드와 백엔드의 역할을 명확히 구분해줍니다.
마치며
Django 템플릿 태그는 단순하지만 제대로 익히면 프로젝트의 표현력을 획기적으로 높일 수 있습니다. 블로그, 쇼핑몰, 대시보드 등 어떤 프로젝트든, 템플릿 태그를 잘 활용하면 더 깔끔하고 유지보수하기 쉬운 코드를 만들 수 있습니다.
여러분이 가장 자주 사용하는 Django 템플릿 태그는 무엇인가요? 댓글로 공유해 주세요—여러분의 활용법을 듣고 싶습니다!
Django 모델링: 데이터베이스 설계의 핵심
강력한 웹 애플리케이션은 모두 잘 구조화된 데이터베이스 위에 구축됩니다. Django 세계에서는 데이터를 제대로 모델링하는 것이 모든 것의 출발점입니다—사용자 인터랙션부터 백엔드 처리까
bigadmin.org
댓글