Django 템플릿에서는 static 태그를 사용해 정적 파일(CSS, JS, 이미지 등)의 경로를 불러올 수 있습니다.
그런데 파일명이 변수로 주어지는 경우, 즉 경로의 일부가 동적(dynamic)일 경우는 어떻게 처리할까요?
예를 들어, 다음과 같이 하고 싶을 수 있습니다:
{% static "uploads/" + filename %}
하지만 위 코드는 템플릿 에러가 발생합니다.
왜냐하면 Django 템플릿 언어(DTL)는 + 연산자를 지원하지 않기 때문입니다.
✅ 해결 방법: add 필터 사용
Django는 문자열을 연결할 수 있는 add 필터를 제공합니다. 이를 이용해 다음과 같이 작성하면 됩니다:
{% static "uploads/"|add:filename %}
이렇게 하면 "uploads/"와 변수 filename이 연결되어 최종 경로가 생성됩니다.
🧪 예시
1. views.py
def profile_view(request):
return render(request, "profile.html", {
"filename": "user123.png"
})
2. profile.html
<img src="{% static 'uploads/'|add:filename %}" alt="Profile Image">
🔍 결과 (렌더링된 HTML)
<img src="/static/uploads/user123.png" alt="Profile Image">
🧠 정리
| 잘못된 예 | {% static "uploads/" + filename %} ❌ |
| 올바른 예 | {% static "uploads/"|add:filename %} |
Django 템플릿에서는 파이썬처럼 +로 문자열을 더할 수 없고, 항상 템플릿 필터를 사용해야 합니다.
add는 동적 파일 경로뿐 아니라 문자열 조합이 필요한 다양한 상황에 유용하니 기억해두면 좋습니다!
'Programming > Django' 카테고리의 다른 글
| [Django] 1. 폴더 구조, App 생성, runserver 실행까지 (1) | 2025.07.20 |
|---|---|
| [Python Django - The Practical Guide] Templates & Static Files (2) | 2025.07.18 |
| [Django] 📘 Template Language (DTL) — 중요한 개념 3가지 (3) | 2025.07.18 |
| [Python Django - The Practical Guide] Urls & Views (2) | 2025.07.17 |
| [Python Django - The Practical Guide] Course Setup (2) | 2025.07.16 |