장고 - Static 파일 서빙하기

Static 파일이란?

  • Static 파일 : 서버에서 미리 준비해둔 파일
  • ‘{‘ + ‘% load static %’ + ‘}’을 이용해 static 태그를 불러와서 리소스 사용 가능(디버그 모드일 때만 정상 동작)
  • whitenoise를 사용하면 라이브 서버에서도 스테틱 파일을 사용할 수 있다.(S3 이용 못할 시, 사용)

Static 파일 서빙 위한 절차

1. whitenoise 설치

$ pip install whitenoise

2. 설정파일 MIDDLEWARE에 whitenoise 추가

- 경로 : 프로젝트 > settings.py
1
2
3
4
MIDDLEWARE = [
...
'whitenoise.middleware.WhiteNoiseMiddleware'
]

3. 설정파일에 static 관련 설정 추가

- 경로 : 프로젝트 > settings.py
1
2
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

4. 디버그 모드 끄고 서버 접속(기본적으로 디버그 모드 비활성화 시, 스테틱/미디어 파일 서빙 불가)

- 경로 : 프로젝트 > settings.py
1
2
DEBUG = False
ALLOWED_HOSTS = ['*']

5. 기존 존재하는 스테틱 파일들을 STATIC_ROOT 폴더에 모아둔다.

$ python manage.py collectstatic

- whitenoise는 STATIC_URL이 포함된 리소스를 STATIC_ROOT에서 찾아 전달하는 역할을 한다.
- 기존 스테틱 파일들을 STATIC_ROOT 폴더에 모아두어야 하는데 이 명령어가 collectstatic 이다.