2019.05.10 장고 정적파일에 관한 이야기
장고 정적 파일 : Static file 과 Media file
참고 : 6. Django 정적 파일 기능 이해하기 · Kay on the rails
- 장고는 정적 파일을 제공하는 실 서비스용 기능을 제공하지 않는다.
- 정적 파일을 제공하는 것은 웹 서버의 전문 영역이기 때문에 개발 단계에서 쓸 정적 파일을 제공하는 기능을 한다.
- 장고를 이때까지 웹 서버라고 생각했는데 장고는 웹 애플리케이션 서버였구나!!
장고의 정적 파일의 2종류
Static file
- 웹 서비스에서 사용하려고 미리 준비해 놓은 정적 파일
- setting.py에 관련 항목 3가지 사용
- STATICFILES_DIRS
- 개발 단계에서 사용하는 정적 파일이 위치한 경로들을 지정하는 설정 항목
- STATIC_URL
- 웹 페이지에서 사용할 정적 파일의 최상위 URL
- STATIC ROOT
- Django 프로젝트에서 사용하는 모든 정적 파일을 한 곳에 모아 넣는 경로
- 개발과정에서 DEBUG가 True가 되어있다면 동작하지 않고 별 문제가 없지만 실 서비스 환경에서는 중요하다
- python manage.py collectstatic 이라는 명령어를 통해 모든 Static file을 모은다.
- 여기에 모인 정적 파일들은 장고가 아닌 웹서버에서 활용한다..
- STATICFILES_DIRS
Media file
- 이용자가 웹에서 올리는 upload 파일
- setting.py에 관련 항목 2가지 사용
- MEDIA_ROOT
- 업로드가 끝난 파일을 배치할 최상위 경로를 지정
- MEDIA_URL
- Media file의 최상위 URL
- MEDIA_URL + MEDIA_ROOT : 실제 접근 주소
- MEDIA_ROOT
- urls.py에 urlpatterns를 추가해줘야지 접근할 수 있다.
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
추가 사항
- Static file와 Media file은 정적 파일이라는 점에서 같지만 정적 파일을 제공하는 상황을 예측할 수 있는지 여부는 다르다.
- 개발단계에서 쓸 정적파일을 제공하는 기능(DEBUG=True인 상황)
- urls.py에 urlpatterns에 URL패턴을 추가해준다. (for media file)
- Static file의 경우 위와 같은 처리를 하지 않아도 개발 단계에서 잘 제공되나, media 파일은 위의 단계를 꼭 거쳐줘야 한다.