-
Django 개발 환경 Static, Media servingDjango 2021. 6. 1. 11:47
서론
django를 막 시작할 때 media나 static폴더를 만들어 파일들을 넣거나 업로드했는데 실행해보면 파일이 불러와지지 않은 적이 있을 것이다. 그에 대한 필요한 설정들을 나열한 페이지이다.
settings.py
먼저 settings.py 파일을 바꿔줘야 한다.
OOO_URL은 말 그대로 사용할 URL을 표시하는 것이고
STATIC은 STATICFILES_DIRS로 저장 경로를 표시하고 MEDIA는 MEDIA_ROOT로 경로를 표시한다.
STATIC의 ROOT는 CollectStatic을 위해 사용되는데 여기를 참조하면 된다.
# settings.py STATIC_URL = '/static/' STATIC_DIR = os.path.join(BASE_DIR, 'static') STATICFILES_DIRS = [ STATIC_DIR ] MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urls.py
다음은 프로젝트 urls.py 에서 변경해 줘야 할 사항이다.
개발 환경에서만 가능한 동작이므로 settings.DEBUG 조건을 넣어 배포 환경에 대비한 코드를 넣었다.
static는 자동으로 추가해준다document를 잘못 해석하였다... static과 media 모두 추가해야 한다.Django에서도 오로지 Debug 환경에서만 권장한다. 여기를 참조해보자
Static
# project/urls.py from django.conf import settings from django.conf.urls.static import static if settings.DEBUG: urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
마치며
이렇게 2가지만 추가하게 되면 Media와 Static파일이 잘 뜨는 걸 알 수 있을 것이다.
배포 환경에는 배포 환경에 맞는 설정을 해야 하므로 별도의 설정이 필요하다.
Reference
https://docs.djangoproject.com/en/3.2/ref/settings/#media-root
'Django' 카테고리의 다른 글
Django queryset distinct and sort (0) 2021.08.02 Django to AWS S3 업로드간 발생하는 I/O operation on closed file 해결방법 (0) 2021.06.21 Django OneToOneField로 연결된 model 자동 생성 (0) 2021.06.14 Django Filefield의 file에서 name 가져오기 (0) 2021.06.14 Django 배포에 사용되는 WSGI란 무엇일까? (0) 2021.06.04