django media

장고에서 ImageField를 사용해 저장한 파일은 media 파일로 저장된다.
하지만 필드에 파일이 직접 저장되는 것이 아니라 필드는 media 파일이 저장된 경로를 저장하고 있는 것이다.

이걸 front에서 가져오기 위해 몇 가지 선행되어야 할 것이 있다.

1. settings.py 설정

settings.py
...

MEDIA_URL = "/media/"

...

settings.py에 MEDIA_URL을 지정해주어야 한다.
각 media 파일에 접근할 때 경로를

ex)/media/파일이름

이렇게 지정해주는 역할을 한다.

또한

settings.py
...

MEDIA_ROOT = os.path.join(BASE_DIR, "media")

...

MEDIA_ROOT도 추가해야 한다.
이 값은 파일이 실제로 저장되는 경로를 설정하는 것!
경로를 저장하는 것이 아니다

2. url 설정

project의 urls.py

from django.conf.urls.static import static
...
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

runserver로 구동하는 개발 서버에서는 자동으로 media 파일을 서빙해 주지 않는다.
urlpattern을 추가하여 서빙되도록 해야 한다.

MEDIA_URL로 들어오는 요청을 MEDIA_ROOT 경로에서 탐색하게 된다.

3. pillow

pip install pillow

이미지 처리를 위해 pillow를 설치해준다.

profile
가보자고

0개의 댓글