웹 개발

[django] Django 에러페이지 처리하기

행니짱 2022. 9. 21. 16:36

안녕하세용 !!! 오늘은 데이터 연수를 듣다가 탈주하고, 집에 돌아와서 다시 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 에러와 우리가 입력해준 메시지가 잘나오는 걸 볼 수 있습니다.