[Django] static, media

JinUk Lee·2024년 10월 28일
0

DRF 학습하기

목록 보기
57/57

static

static file이란 말 그대로 정적 파일이다.

css, js, image 등 변하지 않고 미리 준비해야하는 파일을 말한다.

  • STATICFILES_DIRS : 개발 단계에서 사용하는 정적 파일이 위치한 경로를 지정한다. 만약 여러 앱에서 서로 다른 경로를 사용한다면, 리스트나 튜플의 형태로 다수의 경로를 지정해준다.

  • STATIC_URL : 웹페이지에서 사용할 정적 파일의 최상위 경로이다.

  • STATIC_ROOT : python manage.py collectstatic 명령어를 통해 프로젝트 내의 모든 정적 파일을 저장할 경로를 의미한다.

배포시에만 사용하며 STATICFILES_DIRS 와 동일한 경로를 지정하면 안된다.

media

  • MEDIA_ROOT : 업로드 된 미디어 파일이 저장될 공간을 지정한다. STATIC_ROOT와는 다른 경로여야 하며, image나 file 필드에서 upload_to를 통해 저장되는 최상위 경로이다.

  • MEDIA_URL : 웹페이지에서 사용할 정적 파일의 최상위 경로이다.

django-storages

배포에 있어서는 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 버킷 내에서 원하는 경로를 넣어준다.

profile
개발자 지망생
post-custom-banner

0개의 댓글