이전 포스팅에서 주소/pokemon-book/
다음 url을 pikachu
나 charmander
로 입력하여 접근하는 것과 둘다 아닌 경우
에 접근하는 경우 아래와 같이 views.py
를 정의 했다. 여기서 else
문으로 정의한 즉, 둘다 아닌 경우
를 의도하지 않은 접근
이라 한다. 이전 포스팅의 경우 의도하지 않은 접근
에 등록되지 않은 도감
으로 응답했지만, 본 포스팅에서는 의도하지 않은 접근
에 에러페이지
로 응답하는 방법을 설명한다.
def pokemon_list(request):
return render(request, 'pokemon-book/pokemon-list.html')
def pokemon_detail(request, pokemon_name):
context = dict()
if pokemon_name == "pikachu":
context["name"] = "피카추"
context["description"] = "피카추는 전기속성 포켓몬이다"
context["level"] = 3
context["img_path"] = "pokemon-book/images/pikachu.jpg"
elif pokemon_name == "charmander":
context["name"] = "파이리"
context["description"] = "파이리는 불속성 포켓몬이다"
context["level"] = 5
context["img_path"] = "pokemon-book/images/charmander.jpg"
else: 📌의도하지 않은 접근
context["name"] = "미등록"
context["description"] = "등록되지 않은 포켓몬이다"
context["level"] = "알 수 없음"
context["img_path"] = "pokemon-book/images/noimage.jpg"
return render(request, 'pokemon-book/pokemon-detail.html', context=context)
장고에서 제공하는
404에러 모듈
을 불러온다.
from django.http import Http404 📌404에러 모듈 불러오기
def pokemon_list(request):
return render(request, 'pokemon-book/pokemon-list.html')
def pokemon_detail(request, pokemon_name):
context = dict()
if pokemon_name == "pikachu":
context["name"] = "피카추"
context["description"] = "피카추는 전기속성 포켓몬이다"
context["level"] = 3
context["img_path"] = "pokemon-book/images/pikachu.jpg"
elif pokemon_name == "charmander":
context["name"] = "파이리"
context["description"] = "파이리는 불속성 포켓몬이다"
context["level"] = 5
context["img_path"] = "pokemon-book/images/charmander.jpg"
else:
context["name"] = "미등록"
context["description"] = "등록되지 않은 포켓몬이다"
context["level"] = "알 수 없음"
context["img_path"] = "pokemon-book/images/noimage.jpg"
return render(request, 'pokemon-book/pokemon-detail.html', context=context)
else
문을 수정해 의도하지 않은 접근 시 호출할 메세지를 작성한다.
from django.http import Http404
def pokemon_list(request):
return render(request, 'pokemon-book/pokemon-list.html')
def pokemon_detail(request, pokemon_name):
context = dict()
if pokemon_name == "pikachu":
context["name"] = "피카추"
context["description"] = "피카추는 전기속성 포켓몬이다"
context["level"] = 3
context["img_path"] = "pokemon-book/images/pikachu.jpg"
elif pokemon_name == "charmander":
context["name"] = "파이리"
context["description"] = "파이리는 불속성 포켓몬이다"
context["level"] = 5
context["img_path"] = "pokemon-book/images/charmander.jpg"
else: 📌변경된 조건문
raise Http404("등록되지 않은 포켓몬이다.")
return render(request, 'pokemon-book/pokemon-detail.html', context=context)
여기서 raise는 파이썬에서 지정한 에러를 강제로 발생시키는 문법이다.