Django DEBUG=True와 False 차이점

Joonas' Note

Django DEBUG=True와 False 차이점 본문

개발/python

Django DEBUG=True와 False 차이점

2018. 5. 19. 03:01 joonas 읽는데 1분
  • 요약

Django에서 Summernote Widget을 사용하고 있는데 production 모드 즉, DEBUG=False 인 상태에서 이미지 업로드가 갑자기 안됐다.

삽질을 한참 하다가 결론은 Debug -> Production 모드 시 static 파일들과 media 파일들의 제공 방식이 달라진다는 것이다.
디버그 모드에서는 django에서 해주는 것 같지만, 배포 모드에서는 웹 서버로 관리를 넘겨버리는 것 같다. 다시 말해, Nginx나 Apache에서 /static과 /media 경로와 연결되는 디렉토리를 지정해주어야 한다.

http://uwsgi-docs.readthedocs.io/...#configure-nginx-for-your-site을 읽어보면, location /static에 alias가 걸려있는 것을 볼 수 있다.

erver {
listen 80;
listen [::]:80;
# Change port to 443 and do the nginx ssl stuff if you want it.
# Change server name to the HTTP hostname you are using.
# You may also make this the default server by listening with default_server,
# if you disable the default nginx server declared.
server_name _;
# ...(skip)...
# Django media
location /media {
gzip_static on;
expires max;
alias /path/to/project/media; # your Django project's media files - amend as required
include /etc/nginx/mime.types;
}
location /static {
gzip_static on;
expires max;
alias /path/to/project/static; # your Django project's static files - amend as required
include /etc/nginx/mime.types;
}
}

그리고 Django의 settings.py 또는 local_settings.py에서 반드시 ALLOWED_HOSTS를 설정해주어야 한다.

요약

1. DEBUG=True이면, ALLOWED_HOST는 필요없다.
2. DEBUG=False이면, ALLOWED_HOST를 반드시 설정해주어야 하고 /static과 /media의 디렉토리를 웹 서버(Nginx, Apache 등)에서 설정해주어야 한다.

참고: https://stackoverflow.com/...debug-true-and-false-in-django

Comments