오답노트

[Django] Django File - Static File 본문

Python/Django

[Django] Django File - Static File

권멋져 2022. 11. 19. 15:22

Static File

static file은 정적인 자료를 의미하는데 HTML, CSS, JS, Django Template, Image 등을 의미한다.

 

static file 위치는 앱 폴더 아래 static 폴더 또는 settings.py에 STATICFILES_DIRS에 지정한 곳 있다.

 

https://docs.djangoproject.com/en/3.2/howto/static-files/

 

Django

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

settings.py 에 STATICFILES_DIRS 변수가 없을 경우 위 경로를 참고하여 아래처럼 지정하도록 하자.

 

또 개발이 완료되고 서비스할 때, 위에서 설명한 위치에 있는 모든 sitatic 파일을 한 곳에 복사해야한다. 이를 위해서 경로를 지정해 주어야하는데 STATIC_ROOT 변수를 지정해주도록 하자.

왜 개발할 때와 서비스할 때와 다른 위치에 static file이 존재해야 하는걸까?

 

우리는 개발할 때 runserver라는 명령을 통해 서버를 여는데, 실제로 서비스를 할 때는 runserver로 서버를 열지 않는다.

아파치나 엔진엑스와 같은 서버로 열게 되는데, 이 때 웹서버가 사용하는 스토리지에 우리가 static file을 넣어줘야 하는 것이다.

 

STATIC_ROOT로 복사할 때는 아래의 명령문을 실행하면 자동으로 복사가 된다.

 

python manage.py collectstatic

 

다시 정리하면 아래와 같다.

 

  • 앱/static : 앱 별로 사용되는 static file이 위치되는 곳, settings.py에서 등록된 앱의 순서대로 검색된다.
  • 프로젝트/프로젝트/static : settings.py에서 STATICFILES_DIRS로 인해 지정된 곳으로 모든 위 항목에서 검색이 실패 했을 때, 이 경로로 찾아온다. 모든 앱들이 공통으로 사용되는 static file이 위치하는 곳이다.
  • 프로젝트/static : settings.py에서 STATIC_ROOT로 인해 지정된 곳으로 python manage.py collectstatic 를 실행하면 위 두 항목에 있는 모든 static file들이 이곳으로 복사된다.

 

실습

앱 파일 아래 urls.py 에 다음과 같이 제네릭 뷰를 사용한 url을 등록한다.

그리고 templates/앱 아래에 다음과 같이 장고 템플릿을 생성한다.

그리고 앱/static 아래에 static 파일을 위치시킨다. 실습에서는 images 파일 아래 jpg 파일을 위치 시켰다.

 

 

결과는 다음과 같다.

 

'Python > Django' 카테고리의 다른 글

[Django] Django File - Media File  (0) 2022.11.19
[Django] 기본 View 와 Generic View  (0) 2022.11.19
[Django] Django Form  (1) 2022.11.17
[Django] Manager & QuerySet  (0) 2022.11.16
[Django] 모델 관계 설정  (0) 2022.11.15