Django 에서 static file 설정
Django 에서 static file 을 설정하는 법은 아래에 잘 나와있다.여기서 설정(configuratoin) 방법을 정리해 본다. static file 을 serve 하기 위해서는 아래 순서대로 하면 된다. setting 사항들이라 대부분 settings.py 에서 작업할 내용이다.
- 먼저, django.contrib.staticfiles 를 settings.py 의 INSTALLED_APPS 에 넣어야 한다.
- settings.py에 STATIC_URL 을 추가한다. 이녀석이 어떤 url 인 경우에 static file 을 serve 하는지를 결정하는 것이다. 만약 STATIC_URL을 '/static/' 이라고 설정했다면 http://mydomain.com/static/image.png 를 접근하면 image.png 를 serve 해주는 것이다.
그런데 여기서 template 에 static 을 사용할 때 직접적으로 static 이라는 경로를 적어줄 수도 있지만, 이것을 아래처럼 static 함수를 이용해서 적을 수 있다.
{% load staticfiles %}
{% static "image.png" %}
이렇게 적으면 내가 STATIC_URL 값을 변경해도 알아서 변환된다. 그리고 이녀석을 이용하면 STATICFILES_STORAGE 세팅을 이용해서 한번에 내 이미지들을 CDN 경로로 변경하는 것도 가능하다. - 이제 자신이 사용할 static file 들은 "자신들의 app"(myapp이라 하자) 안에 myapp/static/ 의 형태로 넣어놓으면 된다.
- 위의 myapp/static 경로를 directory 경로를 STATICFILES_DIRS 에 추가하면 된다.
# #### STATIC FILE CONFIGURATION # See: https://docs.djangoproject.com/en/dev/ref/settings/#static-root STATIC_ROOT = normpath(join(SITE_ROOT, 'assets')) # for final deploy # See: https://docs.djangoproject.com/en/dev/ref/settings/#static-url STATIC_URL = '/static/' # See: # https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS STATICFILES_DIRS = ( normpath(join(SITE_ROOT, 'static')), # dirs to be searched ) # See: # https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#staticfiles-finders STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', ) # #### END STATIC FILE CONFIGURATION # #### APP CONFIGURATION INSTALLED_APPS = ( # Default Django apps: ... 'django.contrib.staticfiles', ... )
참고로
django.contrib.staticfiles 를 사용하면 manage.py runserver 를 사용할 때 DEBUG setting 이 True 로 되어 있다면, 직접접근이 가능해 진다. 그러니까 static file 을 STATICFILES_DIRS 에 추가하고, STATIC_URL로 접근하는 것이 아니라, 현재 directory 구조를 url 에 넣으면 바로 접근할 수 있다. 정확한 이야기는 ref. 1 을 참고하자.
댓글 없음:
댓글 쓰기