#36 DEBUG

#36 DEBUG

django 의 환경 설정 파일에는 DEBUG 항목이 있다. 이는 기본값이 True 로 되어있으나 django 공식 문서에서는

운영 환경에서 반드시 False 로 설정하라고 되어있다. 그 이유는 실행 도중 오류가 발생할 경우 DEBUG 가 True 로

되어있으면 오류 내역을 상세하게 화면에 출력하는데, 이 내용에 settings.py 와 urls.py 에 설정한 내용들이 모두 나타나

서버의 정보를 과다하게 노출하게 되기 때문이다.

1. DEBUG 설정

개발환경에서 서버의 환경 설정 파일인 config/prod.py 를 위와 같이 수정하고 commit, push 한 뒤 서버에서

git pull 을 실행하여 반영하자. 물론 Gunicorn 서비스를 재시작하는 것도 잊어선 안된다.

2. DEBUG 테스트

이제 DEBUG 값에 따라 어떤 차이가 발생하는지 로컬 환경과 서버 환경에서 각각 에러를 발생시켜 비교해보자.

먼저 DEBUG 값이 디폴트로 True 상태인 로컬 환경이다. 존재하지 않는 url을 요구하여 404 에러가 발생하고

pybo/urls.py 의 내용이 그대로 노출된다.

서버의 경우 단순히 표준적인 404 에러 페이지가 보여질 뿐이다.

3. 404 페이지

DEBUG=False 일 때 표시되는 기본 404 페이지는 굉장히 밋밋하다. 404 페이지를 원하는 형태로 바꿔보자.

개발환경에서 config/urls.py 에 위와 같이 handler404 변수를 지정해준다. 이 변수에 뷰 함수를 지정해주면

404 에러가 발생했을 때 해당 뷰 함수가 자동으로 호출된다.

common/views.py 에 실제로 page_not_found 함수를 구현한다. exception 변수에는 오류에 대한 상세 정보가

담겨있다. 만약 오류의 내용을 화면에 나타내고싶다면 exception 변수를 읽어서 나타낼 수 있다.

마지막으로 templates/common/404.html 을 생성하여 위와 같이 404 페이지를 작성해준 뒤 commit, push 해준다.

서버에서 git pull 로 변경사항을 반영하고 Gunicorn 서비스를 재시작한다.

이제 404 페이지가 위와 같이 표시된다. 다른 오류 페이지들도 이와 같은 방식으로 변경해줄 수 있다.

from http://scala0114.tistory.com/125 by ccl(A) rewrite - 2021-10-15 23:01:04