본문으로 바로가기

Media Root 설정하기

category 장고/기타 설정 방법 2018. 12. 13. 18:33

Static 과 Media


Static 은 말그대로 정적인 파일로 한번 업데이트를 하면 특별한 이유가 있지 않은 이상 수정하지 않는 파일들을 통칭한다.

일반적으로는 부트스트랩이 적용된 css 파일 등이 대표적이지 않을까 싶다.


Media 는 사용자가 올리게되는 파일들을 일컫는데 수시로 업데이트/삭제/변경이 되는 미디어 파일들을 말한다.(사용자 대상)



장고에서 Media 파일에 대한 경로를 설정해야 하는 이유


이미지 파일을 저장하고 불러오는 행동은 단순하지만 코딩을 공부하면서 초반에는 많이 헷갈렸다.


개념적으로 생각하면 이미지 파일을 저장하기 위한 경로는 따로 디렉토리로 저장하고, 그 디렉토리의 이미지 파일을 가져온다고 생각해야 한다.


만약 이와같이 친절하게 경로를 설정하지 않는다면 장고는 이미지를 저장은 하지만 해당 경로를 다시 불러올 때는 어디서 불러와야할지 모르기 때문에 '해당 파일은 존재하지 않습니다' 와 같은 에러를 발생 시킨다.




이유는 해당 이미지 파일 위에 커서를 올려보면 아래와 같은 url 주소가 나오는데 아래의 주소를 따라가봐도 이미지 파일은 없다.

[ 이러한 이슈 처리를 위해 MEDIA_ROOT 설정이 꼭 필요한 것이다 ]





경로 설정 방법



settings.py

MEDIA_URL = '/media/'

# 해당 경로에 media 디렉토리가 존재하지 않을 경우에 생성까지도 됨
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')


urls.py

from django.conf.urls.static import static

# 방법 1.
+ static(
    prefix='/media/'
    document_root=settings.MEDIA_ROOT
    )

# 방법 2.
urlpatterns += static(prefix=settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


위와 같이 설정하면 1. 해당 경로에 이미지 파일을 저장하고, 2. 저장한 파일을 불러올 때는 저장한 경로를 따라가서 이미지 파일을 보여준다.


[ MEDIA_URL, MEDIA_ROOT 설정 이후의 이미지 URL 주소 ]