FrameWork/Django

File Upload

mansoorrr 2024. 7. 21. 22:03

django 공식문서에서는 File Upload를 위해 다음과 같이 세팅하라고 안내한다.

  • MEDIA_ROOT 설정
  • MEDIA_URL 설정
  • url 등록

하지만 이것은 보안에 문제가 있으므로 개발중에만 이렇게 진행하라고 안내한다.

 

Settings | Django documentation

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

 

[** File Upload**]

  • MEDIA_ROOT: 개발 서버 상에서 실제로 이미지가 저장되는 폴더
  • MEDIA_URL: URL상에서 이미지의 경로
  • 결국, 127.0.0.1:8000/MEDIA_URL/<file_name>이 되어 웹상에서 파일을 볼 수 있음
#---------- config/settings.py
<생략..>

#Media
MEDIA_ROOT = 'uploads' #업로드한 파일이 저장되는 경로

MEDIA_URL = 'user-uploads/' #업로드한 파일을 웹상에서 볼 수 있는 경로

 

  • url등록: MEDIA_URL을 통해 새로운 URL이 등록되었으므로 config/urls.py에도 등록되어야 함
    • Media 파일의 경우 django에서 기본적으로 제공하는 static 매서드를 통해 url등록
#---------- config/urls.py
from django.contrib import admin
from django.urls import include, path
from django.conf.urls.static import static
from django.conf import settings

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/v1/rooms/', include('rooms.urls')),
    path('api/v1/categories/', include('categories.urls')),
    path('api/v1/experiences/', include('experiences.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) #url등록