Byeonguk Kim

안녕하세요. 29살의 조금은 늦은 나이로 새롭게 개발자로 시작하는 신입 개발자입니다. 포트폴리오 [https://deaguowl.github.io]

Django 19. 장고 정적파일(STATIC,MEDIA)

10 May 2019 » Django

2019.05.10 장고 정적파일에 관한 이야기

장고 정적 파일 : Static file 과 Media file

참고 : 6. Django 정적 파일 기능 이해하기 · Kay on the rails

  1. 장고는 정적 파일을 제공하는 실 서비스용 기능을 제공하지 않는다.

843801B8-F61F-492C-8523-0C854876DF52

  • 정적 파일을 제공하는 것은 웹 서버의 전문 영역이기 때문에 개발 단계에서 쓸 정적 파일을 제공하는 기능을 한다.
  • 장고를 이때까지 웹 서버라고 생각했는데 장고는 웹 애플리케이션 서버였구나!!

장고의 정적 파일의 2종류

Static file

  1. 웹 서비스에서 사용하려고 미리 준비해 놓은 정적 파일
  2. setting.py에 관련 항목 3가지 사용
    1. STATICFILES_DIRS
      1. 개발 단계에서 사용하는 정적 파일이 위치한 경로들을 지정하는 설정 항목
    2. STATIC_URL
      1. 웹 페이지에서 사용할 정적 파일의 최상위 URL
    3. STATIC ROOT
      1. Django 프로젝트에서 사용하는 모든 정적 파일을 한 곳에 모아 넣는 경로
      2. 개발과정에서 DEBUG가 True가 되어있다면 동작하지 않고 별 문제가 없지만 실 서비스 환경에서는 중요하다
    4. python manage.py collectstatic 이라는 명령어를 통해 모든 Static file을 모은다.
    5. 여기에 모인 정적 파일들은 장고가 아닌 웹서버에서 활용한다..

Media file

  1. 이용자가 웹에서 올리는 upload 파일
  2. setting.py에 관련 항목 2가지 사용
    1. MEDIA_ROOT
      1. 업로드가 끝난 파일을 배치할 최상위 경로를 지정
    2. MEDIA_URL
      1. Media file의 최상위 URL
    3. MEDIA_URL + MEDIA_ROOT : 실제 접근 주소
  3. urls.py에 urlpatterns를 추가해줘야지 접근할 수 있다.
  4. urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

추가 사항

  1. Static file와 Media file은 정적 파일이라는 점에서 같지만 정적 파일을 제공하는 상황을 예측할 수 있는지 여부는 다르다.
  2. 개발단계에서 쓸 정적파일을 제공하는 기능(DEBUG=True인 상황)
    1. urls.py에 urlpatterns에 URL패턴을 추가해준다. (for media file)
    2. Static file의 경우 위와 같은 처리를 하지 않아도 개발 단계에서 잘 제공되나, media 파일은 위의 단계를 꼭 거쳐줘야 한다.