📂 Django에서 MEDIA_URL과 MEDIA_ROOT 설정 완벽 이해하기
Django 프로젝트에서 이미지, 파일 업로드 기능을 구현할 때 꼭 필요한 설정이 있습니다. 바로 MEDIA_URL과 MEDIA_ROOT입니다.
1️⃣ MEDIA_URL과 MEDIA_ROOT란?
설정 의미 역할
MEDIA_URL | 웹 주소 상에서 파일 접근 경로 | 브라우저가 파일을 요청할 때 사용 |
MEDIA_ROOT | 실제 서버의 파일 저장 위치 | 업로드된 파일이 저장되는 폴더 경로 |
2️⃣ 코드 예시
MEDIA_URL = 'media/'
MEDIA_ROOT = BASE_DIR / 'media'
🔍 설명
- BASE_DIR은 프로젝트의 루트 경로
- 실제 저장 경로는 /프로젝트/media/
- 브라우저에서는 http://localhost:8000/media/파일명 으로 접근 가능
3️⃣ 모델에서의 활용 예시
class PostImage(models.Model):
image = models.ImageField(upload_to='post/%Y/%m/%d')
- 사용자가 업로드한 이미지가 media/post/2025/05/14/ 같은 폴더에 저장됨
- 웹에서는 /media/post/2025/05/14/이미지.jpg 로 접근 가능
4️⃣ 개발 서버에서 테스트하려면?
urls.py 설정을 추가해야 합니다:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... 기존 url들 ...
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
이 설정은 DEBUG=True일 때 개발 서버가 업로드 파일을 직접 서빙할 수 있게 해줍니다.
운영 서버(Nginx 등)에서는 이 설정 대신 별도 static/media 파일 서빙 설정이 필요합니다.
✅ 마무리 정리
항목 설명
MEDIA_ROOT | 업로드된 실제 파일이 저장되는 서버 경로 |
MEDIA_URL | 해당 파일을 웹에서 접근할 수 있는 URL 접두어 |
urls.py 추가 설정 | 개발 중 직접 파일 서빙을 위해 필요 |
MEDIA_URL과 MEDIA_ROOT 설정은 Django에서 이미지 업로드, 파일 첨부 기능을 구현할 때 반드시 알아야 할 기본 지식입니다. 실제 프로젝트에서 파일 저장이 어떻게 이루어지는지 흐름을 꼭 이해하고 넘어가세요! 🚀
'기술블로그-Django편' 카테고리의 다른 글
🔍 Django에서 'results = ...' 와 {'results': results}가 왜 둘 다 나오나요? (0) | 2025.05.15 |
---|---|
🔍 Django ORM 쿼리 최적화 - select_related vs prefetch_related (0) | 2025.05.14 |
✅ Django에서 User 모델을 참조하는 두 가지 방식 비교 (0) | 2025.05.14 |
📂 Django 모델에서 str() 함수 작동 흐름 완벽 해설 (0) | 2025.05.14 |
📬 Django 이메일 전송 및 보안 서명 처리 (0) | 2025.05.14 |