static file이란 말 그대로 정적 파일이다.
css, js, image 등 변하지 않고 미리 준비해야하는 파일을 말한다.
STATICFILES_DIRS : 개발 단계에서 사용하는 정적 파일이 위치한 경로를 지정한다. 만약 여러 앱에서 서로 다른 경로를 사용한다면, 리스트나 튜플의 형태로 다수의 경로를 지정해준다.
STATIC_URL : 웹페이지에서 사용할 정적 파일의 최상위 경로이다.
STATIC_ROOT : python manage.py collectstatic
명령어를 통해 프로젝트 내의 모든 정적 파일을 저장할 경로를 의미한다.
배포시에만 사용하며 STATICFILES_DIRS
와 동일한 경로를 지정하면 안된다.
MEDIA_ROOT : 업로드 된 미디어 파일이 저장될 공간을 지정한다. STATIC_ROOT
와는 다른 경로여야 하며, image나 file 필드에서 upload_to
를 통해 저장되는 최상위 경로이다.
MEDIA_URL : 웹페이지에서 사용할 정적 파일의 최상위 경로이다.
배포에 있어서는 django-storages
패키지의 세팅을 아는 것이 더 중요한 것 같다.
S3버킷에서 static, media 폴더를 각각 생성하여 파일을 저장하고 싶을 때 아래와 같은 방법을 사용한다.
#settings.py
STORAGES = {
"default": {
"BACKEND": "config.storages.MediaStorage",
},
"staticfiles": {
"BACKEND": "config.storages.StaticStorage",
}
}
#config/storages.py
from django.conf import settings
from storages.backends.s3boto3 import S3Boto3Storage
class MediaStorage(S3Boto3Storage):
bucket_name = settings.AWS_STORAGE_BUCKET_NAME
location = 'media'
class StaticStorage(S3Boto3Storage):
bucket_name = settings.AWS_STORAGE_BUCKET_NAME
location = 'static'
location
은 S3 버킷 내에서 원하는 경로를 넣어준다.