[django toolBox] 장고 DEBUG = FALSE 에서 정적 파일과 미디어 읽기
settings.py에서 작업하실때는 디버그의 기본은 debug=True 입니다. 그러나
실제로 서비스를 할때는 보안상 debug=False 로 해서 끕니다. 그러나 이때부터 Django는 더 이상 정적 파일을 처리하지 않습니다.
여러분 호스팅 환경의 웹 서버(Apache 등)가 이를 처리해야 합니다.
그러나 간단하게 다음과 같은 방법도 사용이 가능합니다.
다음의 안내를 따르시면 됩니다.
1.먼저 debug = False와 Allowed_HOSTS 처리를 합니다. 예시에서는 ALLOWED_HOSTS가 * 이지만, 실제 사용할때는
반드시 여러분의 도메인을 사용합니다. (로칼에서 테스트할때는 locahost또는 IP)
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
ALLOWED_HOSTS = ['*']
2 settings.py 에서 STATIC_ROOT 와 MEDIA_ROOT 경로를 정의합니다.
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
if DEBUG:
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
else:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
3. 그리고 루트 수준의 urls.py에서(settings.py가 있는 폴더) 정적 URL에서 STATIC_ROOT 와 MEDIA_ROOT 에 연결되도록 다음과 같이 정의합니다.
from django.conf.urls import url
from django.conf import settings
from django.views.static import serve
urlpatterns = [
url(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}),
url(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}),
]
또한 여러분은 장고를 실제 서비스 하기 전에 다음의 배포 전 체크리스트를 확인해 보실 것을 추천드립니다.
배포 전 체크리스트(장고 공식 문서)
목록으로