이번에는 오류 페이지를 수정해보자.
HTTP의 주요 응답 코드 3개는 다음과 같다.
오류 코드 | 설명 |
200 | 성공 |
500 | 서버 오류 |
404 | 요청한 페이지를 찾을 수 없음 |
1. 404 페이지로 바꾸기
지난 글에서 질문 상세 페이지를 만들어보았다.
상세 페이지는 Question의 id를 기준으로 만들어지는데 이때 없는 id 값을 입력하면 다음 화면이 나온다.
위 페이지의 오류 코드는 500이다.
없는 데이터를 요청할 경우 'Not Found (404)' 페이지가 더 바람직하므로 404페이지를 출력하도록 수정해보자.
질문의 상세 페이지 화면을 수정하기 때문에 test_pages/views.py 에서 detail 함수를 수정한다.
Question.objects.get(id = question_id) → get_object_or_404(Question, pk = question_id) 로 수정하고
get_object_or_404 를 import 했다.
여기서 사용한 pk는 Primary key의 줄임말로 Question 모델의 Primary Key인 id를 의미한다.
이렇게 수정하고 다시 페이지를 요청하면 다음처럼 404 페이지가 출력된다.
이때 맨 아래 문구를 해석해보면 settings 파일에서 DEBUG = True 로 설정해서 위와 같은 페이지가 뜨는데
True 값을 False로 바꾸면 표준 404 페이지를 출력한다고 한다.
2. 표준 404 페이지로 바꾸기
settings.py 파일에서 DEBUG = False 로 수정하고 터미널을 보면 에러 문구가 떠있다.
CommandError : You must set settings.ALLOWED_HOSTS if DEBUG is False
문구에 따라 settings 파일에서 ALLOWED_HOSTS를 지정해주자.
우리는 로컬 호스트를 쓰고 있으므로 ALLOWED_HOSTS = ['127.0.0.1'] 로 수정하고 다시 페이지에 접속했다.
3. 404 페이지 수정하기
템플릿을 이용하여 404페이지를 수정해보자.
mysite/templates에 404.html 파일을 생성하고 아래와 같이 작성하고 페이지에 접속해보았다.
(404 페이지는 공용 템플릿으로 이용할 것이므로 templates 폴더에 생성하였다.)
허걱... 이건 404 Not Found
'장고' 카테고리의 다른 글
장고(Django) | 페이지에서 모델 조회하기 (0) | 2022.01.22 |
---|---|
장고(Django) | 장고 관리자(admin) (0) | 2022.01.20 |
장고(Django) | 모델 사용하기 (0) | 2022.01.20 |
장고(Django) | 모델 작성하기 (0) | 2022.01.19 |
장고(Django) | 앱 생성하기 (0) | 2022.01.19 |