본문 바로가기
Programming/Django

[Django] 템플릿에서 정적 파일(static file) 경로를 동적으로 만드는 방법

by Mandy's 2025. 7. 18.

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는 동적 파일 경로뿐 아니라 문자열 조합이 필요한 다양한 상황에 유용하니 기억해두면 좋습니다!