728x90
반응형
환경
- Python 3.6
- Django 2.1.1
- VueJS Single Application
요약
Django의 settings.py 에서 DEBUG = False 일 경우 프론트 페이지에서 static URL로 파일을 엑세스 할 수가 없다.
원인
- static URL을 Django의 가이드 문서대로 아래의 코드와 같이 추가해주면 settings.py에 DEBUG = True에서 설정할 경우 static URL로 접근해도 파일 엑세스에 아무 이상이 없다.
from django.conf.urls.static import static
urlpatterns = [
...
url(r'^$', index_view, {}, name='index'),
]
# We use a single global DRF Router that routes views from all apps in project
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
- 하지만 실서버일 경우 오류가 발생하였을시 디버깅 내용이 화면에 표시되면 안되기 때문에 DEBUG = False로 설정하고 웹을 기동한다. 그럴 경우 위와 같이 설정할 경우 해당 페이지에 접근하지 못하는 404 (Not Page Found) 오류가 발생한다.
- 왜일까? django에서는 DEBUG = False 일경우 보안상 정적인 파일의 엑세스를 금지하고 있다. django.conf.urls.static 의 static 함수를 보면 쉽게 내용을 알 수 있다.
대응
그럼에도 불구하고 우리는 DEBUG = False 일 경우도 정적인 URL에 접근을 허용해야 하는 경우가 있다. 이럴 경우 django.conf.urls.static의 코드를 바로 urls.py에 구현해주면 된다.
from django.views.static import serve
from django.urls import re_path
urlpatterns = [
...
url(r'^$', index_view, {}, name='index'),
]
urlpatterns += [
re_path(r'^%s(?P.*)$' % re.escape(settings.STATIC_URL.lstrip('/')), serve,
kwargs={'document_root': settings.STATIC_ROOT})
]
728x90
반응형
'백엔드 > 개발' 카테고리의 다른 글
Spring Boot - Hello World 시작해보기 (0) | 2022.04.13 |
---|---|
Spring Boot 환경설정 (0) | 2022.04.13 |
Django-DSL 동적 INDEX 생성 (0) | 2019.02.03 |
Django - 프론트엔드 SPA 연동시 context parameter 설정 (0) | 2018.12.31 |
Django - 웹 서버 기동시 LOG 파일 엑세스 오류 (0) | 2018.12.31 |