Django 정적 파일 (static)
목표 화면에 쓰이는 Static(정적 파일)·Media(미디어) 가 무엇이고 어떻게 다른지, 누가 화면에 내보내는지 이해한다.
1. Static(정적 파일)이란?
Static(정적 파일) 은 화면에 쓰이는 CSS·JS·이미지처럼, 개발자가 미리 만들어 코드와 함께 올리는 파일입니다.
src/
├── static/ ← 이 강의 (정적 파일 · CSS·JS·이미지)
├── templates/
└── ...
'정적'이라고 부르는 이유는, 요청할 때마다 새로 계산해 바뀌는 게 아니라 만들어 둔 그대로 화면에 내려가기 때문입니다. 로고 이미지나 버튼 스타일은 누가 언제 봐도 똑같습니다.
2. Static vs Media
이름이 비슷한 Media(미디어) 도 있는데, 성격이 정반대입니다.
| Static | Media | |
|---|---|---|
| 누가 넣나 | 개발자가 만들어 코드와 함께 올림 | 사용자가 쓰면서 업로드 |
| 예 | CSS, JS, 로고 이미지 | 프로필 사진, 첨부파일 |
| git | 코드라서 함께 올림 | 사용자 데이터라 따로 관리 |
핵심 구분은 Static = 우리가 넣는 것, Media = 사용자가 올리는 것 입니다.
3. 화면에 내보내는 주체
같은 CSS 여도, 화면에 내보내 주는 주체가 환경마다 다릅니다.
- prod: 웹서버(Apache)가 직접 내보냅니다. 이미 완성된 파일이라 앱을 거치지 않고 바로 주는 편이 빠르기 때문입니다.
- dev: 앱(Django)이 직접 내보냅니다. 파일을 고치고 새로고침하면 바로 반영됩니다.
그래서 prod 에서는 배포할 때 화면 자원을 웹서버가 보는 자리로 모아 두는 단계가 필요합니다(배포 강의에서 다룹니다). 이 단계를 빼먹으면 "새 CSS 를 올렸는데 화면이 안 바뀌는" 흔한 문제가 생깁니다.
마무리
- 핵심 정리: Static 은 개발자가 만들어 코드와 함께 올리는 화면 자원(CSS·JS·이미지), Media 는 사용자가 업로드하는 파일(프로필 사진 등)입니다. prod 에선 웹서버(Apache)가 직접, dev 에선 앱(Django)이 직접 화면에 내보냅니다.
- 주의 사항: "prod 에 새 CSS 를 올렸는데 안 바뀐다" 싶으면, 배포 때 화면 자원을 모아 두는 단계를 빼먹은 경우가 많습니다.
- 다음 시간: 여기까지가 'Django 이해'입니다. 다음 챕터에서는 데이터가 실제로 저장되는 데이터베이스부터 봅니다.