[django] Django 에러페이지 처리하기
안녕하세용 !!! 오늘은 데이터 연수를 듣다가 탈주하고, 집에 돌아와서 다시 django를 켰네요 ㅎㅎ
이번 포스팅에서는, 우리가 요청하지 않은 잘못된 페이지가 들어왔을때,
어떻게 처리할 수 있는지 알아보도록 하겠습니다.
요청이 잘못되었는지 아닌지 어떻게 판단할 수 있을까요?
바로 "상태코드(StatusCode)"를 통해서 요청에 대한 처리 결과를 알 수 있습니다.
상태코드(Status Code)
= 3자리수로 되어 있는 코드
= 요청에 대한 처리 결과가 어떻게 되었는지 알려주는 코드
= 크게 5가지로 구성
(1) 1XX Informational
: 1로 시작하는 코드 - 클라이언트로부터 요청을 받아서 작업을 진행하고 있다는 뜻
(2) 2XX Success
: 2로 시작하는 코드 - 요청에 대한 처리 결과가 정상이라는 뜻
- 200 = 정상일때 일반적으로 받는 상태 코드
- 204 = 정상 처리 되었지만, 서버에서 보내줄 데이터가 없음
(3) 3XX Redirection
: 3으로 시작하는 코드 - 요청을 완료하기 위해 추가적인 동작이 필요하다는 뜻
- 301 = 요청한 자원이 새로운 주소로 옮겨짐
- 304 = 요청에 대한 변경 사항이 없음 -> 마지막으로 클라이언트가 받았던 자원을 사용
(4) 4XX Client Eroor
: 4로 시작하는 코드 - 클라이언트의 요청에 문제가 있음
- 404 = 요청한 자원이 없음
- 403 = 요청한 자원에 대한 접근 권한이 없음 -> 요청은 이해했으나 금지 됌
(5) 5XX Server Error
: 5로 시작하는 코드 - 서버가 요청을 처리하는 과정에서 문제 발생
- 500 = 서버 내부 오류를 의미
실제로 웹페이지들에서도 없는 URL 주소를 입력해줬을때, 다음과 같이 처리해주고 있다.
StatusCode : 404로, 요청한 자원이 없음을 나타내준다.
우리가 만든 웹에서, 우리가 의도하지 않은 URL로 접근했을때 페이지.
food != chicken이기때문에 context = dict()로 render 함수의 인수인 context=context로 넘어간다.
<의도하지 않은 URL일때 404 에러 내도록 처리하는 법>
(1) 장고에서 제공해주는 404 에러 가져오기
form django.http import Http404
(2) 우리가 의도하지 않은 url일때 에러 발생시키기
else:
raise Http("화면에 보여줄 메시지 입력")
* raise = 파이썬에서 지정한 에러 강제 발생시킬때 사용하는 문법
올바른 url로 접근했을때는 페이지가 잘 나오지만,
의도하지 않은 url로 접근했을때는 404 에러와 우리가 입력해준 메시지가 잘나오는 걸 볼 수 있습니다.