본문 바로가기
Programming/Django

[Django] 📘 Template Language (DTL) — 중요한 개념 3가지

by Mandy's 2025. 7. 18.

1. ✅ 딕셔너리 접근 방식: [] ❌ → . ✅

Django 템플릿에서는 파이썬 딕셔너리처럼 ['key']로 접근할 수 없습니다.

❌ 일반적인 파이썬 방식 (사용 불가)

{{ my_dict['title'] }}

✅ DTL 방식 (dot notation)

{{ my_dict.title }}

왜?

  • DTL은 파이썬이 아니라 Django가 만든 템플릿 전용 언어이기 때문입니다.
  • dot notation은 딕셔너리 키, 객체의 속성, 모델의 필드 모두를 유연하게 처리합니다.

2. ✅ 함수 호출도 괄호 없이 사용

Django 템플릿에서는 함수를 호출하지 않습니다. 즉, ()를 붙이지 않아요.

❌ 파이썬 함수 호출

{{ my_function() }}

✅ DTL 방식 (함수 결과를 context에서 전달받은 변수처럼 사용)

{{ my_function }}

즉:
템플릿에 전달된 값이 함수라면, Django는 이를 실행하고 그 리턴값을 출력합니다.


3. ✅ Django Template은 "비슷하지만 다른 문법"

DTL은 파이썬처럼 생겼지만, 다른 문법 규칙이 많습니다.
예를 들어:

파이썬 문법 DTL 문법

dict['key'] dict.key
func() func
"A" + "B" `{% with new_val=A

🧪 예시 코드 (통합)

# views.py
def my_view(request):
    context = {
        "user_info": {"name": "Minjoo"},
        "greeting": get_greeting()  # 이건 실행된 결과
    }
    return render(request, "my_template.html", context)

def get_greeting():
    return "Hello, DTL!"
{# my_template.html #}
<p>{{ user_info.name }}</p>   {# 딕셔너리도 .으로 접근 #}
<p>{{ greeting }}</p>         {# 이미 실행된 함수 결과 출력 #}

✅ 요약

기능 DTL에서의 사용법

딕셔너리 key 접근 {{ dict.key }}
함수 호출 결과 {{ function }} (괄호 없이)
파이썬이 아님 파이썬처럼 보이지만 내부적으로 다름