@ views.py
- 유저가 request한 정보가 데이터베이스에 없을때, 404에러를 리턴한다.
- 크게 두가지 방법으로 처리할 수 있다.
1. Raising a 404 using try/except
and Http404
- try: 유저가 요청한 객체가 DB에 있는지 확인하는 코드
- except .. raise: 객체가 없는 경우의 처리 (DoesNotExist) .. 보여줄 에러 메세지
- return: 에러가 없는 경우의 처리
@ views.py
from django.http import Http404
from django.shortcuts import render
from .models import Question
def detail(request, question_id):
try:
question = Question.objects.get(pk=question_id)
except Question.DoesNotExist:
raise Http404("Question does not exist")
return render(request, 'polls/detail.html', {'question': question})
2. Shortcut: get_object_or_404
- django.shortcuts 모듈에서 get_object_or_404를 import하여 사용한다.
- 2가지 parameter를 필수로 받는다 (klass, **kwargs)
+ parameter1 = MODEL class
+ parameter2 = Lookup, get(), filter()가 받는 포맷과 맞추어야함 (ex: pk= )
@ views.py
from django.shortcuts import get_object_or_404, render
from .models import Question
def detail(request, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, 'polls/detail.html', {'question': question})