[django]404

Hyeseong·2021년 2월 7일
0

django

목록 보기
32/35

서두 🤡

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'))

스텝1, Http404 임포트🤧

디비에서 찾지 못했다고 별도의 404페이지(장고에서 만들어준)를 호출함
특이한건 return 키워드 대신 raise 키워드를 사용하네요.
그래서 에러를 발생시킨다는 직관적 의미에 더 충실한것 같아요.

  • Http404 임포트해줄게요.
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()

스텝2, 404.html 생성 🤧

templates/404.html를 만들게요.

DEBUG = False로 수정 🤧

config/settings.py

프런트 화면

console screen

참고로 이번 페이지에서 settings.py에 설정한거 다 빽시켜주세요.(만약 다른것도 따라하신다면 말이조~)

profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글