Django에서는 템플릿(template) 과 정적 파일(static) 을
보통 아래와 같은 샌드위치 구조로 관리합니다.
templates/
└─ app_name/
└─ index.html
static/
└─ app_name/
└─ images/
└─ css/
이 구조에는 분명한 이유가 있습니다.
1. 템플릿 탐색은 INSTALLED_APPS 순서대로 진행된다
settings.py에서 APP_DIRS = True로 설정하면,
Django는 INSTALLED_APPS에 등록된 앱 순서대로 템플릿을 찾습니다.
INSTALLED_APPS = [
...
'A',
'B',
]
만약 두 앱 모두에 templates/index.html 이 있다면 A 앱의 index.html이 먼저 발견되어 사용됩니다.
즉, 샌드위치 구조가 아니면 원하지 않는 앱의 템플릿이 렌더링되는 문제가 발생할 수 있습니다.
➡️ templates/A/index.html, templates/B/index.html 처럼 앱 이름으로 한 번 더 감싸는 이유가 바로 이것입니다.
2. static 파일은 배포 시 한곳으로 모인다
Django에서 배포할 때는 collectstatic 명령어를 사용해
모든 앱의 static 파일을 하나의 디렉토리로 모읍니다.
이때 문제가 되는 상황은 다음과 같습니다.
- A 앱: static/images/codeit.png
- B 앱: static/images/codeit.png
파일명이 같으면 충돌이 발생하거나 의도하지 않은 파일로 덮어쓰기 될 수 있습니다.
그래서 static도 다음처럼 관리합니다
static/
└─ A/
└─ images/codeit.png
└─ B/
└─ images/codeit.png
3. 정리하면
- 템플릿은 INSTALLED_APPS 순서대로 탐색됨
- 샌드위치 구조가 아니면 다른 앱의 template을 먼저 찾을 수 있음
- static 파일은 배포 시 한 디렉토리로 모이기 때문에
- 앱 이름으로 구분하지 않으면 파일 이름 충돌 위험이 큼
그래서 Django에서는 template / static 모두 “샌드위치 구조”가 사실상 표준입니다.
'Django 프론트& 백엔드 개발' 카테고리의 다른 글
| Django 템플릿 상속 이해하기 (부모 · 자식 템플릿) (0) | 2026.01.04 |
|---|---|
| 템플릿 언어 이해하기 (0) | 2026.01.04 |
| 정적 파일(static files)이란? (0) | 2026.01.04 |
| Django의 MVT 구조 개념 (0) | 2026.01.04 |
| Django Template과 render 이해하기 (0) | 2026.01.04 |