404페이지를 만드는 이유는 통상
404 status code
를 이해하기 때문 코드는 지난번에 이어서 진행하도록 할게요.
https://velog.io/@hyeseong-dev/django-FBV-about-product-detail-page
아래 코드는 디비에서 찾지 못하면 메인페이지로 리다이렉트해준거!
from django.urls import reverse
from django.shortcuts import render, redirect
from rooms import models
def room_detail(request, pk):
try:
room = models.Room.objects.get(pk=pk)
return render(request, 'rooms/room_detail.html', context={'room':room})
except models.Room.DoesNotExist:
return redirect(reverse('core:home'))
디비에서 찾지 못했다고 별도의 404페이지(장고에서 만들어준)를 호출함
특이한건 return
키워드 대신 raise
키워드를 사용하네요.
그래서 에러를 발생시킨다는 직관적 의미에 더 충실한것 같아요.
from django.http import Http404
from django.shortcuts import render
from rooms import models
def room_detail(request, pk):
try:
room = models.Room.objects.get(pk=pk)
return render(request, 'rooms/room_detail.html', context={'room':room})
except models.Room.DoesNotExist:
raise Http404()
templates/404.html를 만들게요.
config/settings.py
프런트 화면
console screen