티스토리 뷰

DEV/Django

[Django] model.Objects.get 예외처리

뚜비두빱 2022. 1. 24. 22:00

django의 모델을 model.objects.get을 사용해서 불러올시에 다음과 같이 예외처리를 해줄 수 있습니다.

model.DoesNotExist

try:
    user = User.objects.get(pk=1337)
		car = Car.objects.get(pk=13)
except User.DoesNotExist:
		logging.error("User does not exist")
except Car.DoesNotExtist:
		logging.error("Car does not exist")

각 모델마다 DoesNotExist를 호출해서 나눠서 확인이 가능합니다.

 

ObjectDoesNotExist

from django.core.exceptions import ObjectDoesNotExist

try:
    user = User.objects.get(pk=1337)
		car = Car.objects.get(pk=13)
except ObjectDoesNotExist:
		logging.error("User or Car does not exist")

모델을 불러오며 오류가 나면 한번에 잡을 수 있습니다.

 

참고 : 링크1, 링크2

 

get_object_or_404

from django.shortcuts import get_object_or_404

user = get_object_or_404(User, pk=1337)

모델을 불러오다가 DoesNotExist가 호출되면 http404 오류를 raise합니다.

model이 아닌 view에서 사용하기에 적합합니다. 위 코드는 아래의 코드와 같은 역할입니다.

from django.http import Http404

def my_view(request):
    try:
        obj = User.objects.get(pk=1337)
    except User.DoesNotExist:
        raise Http404("No User matches the given query.")

참고 : 링크

 

MultiValueDictKeyError

MultiValueDictKeyError는 dict에 일치하는 key가 없는 경우 발생할 수 있는 문제 입니다.

    def create(self, request, *args, **kwargs):
        try:
            group = Group.objects.get(name=request.data['group'])
        except MultiValueDictKeyError:
            content = {'error': 'group key not found'}
            return Response(content, status=HTTP_404_NOT_FOUND)

'pk'라는 key값을 받지 못했을 때 생기는 오류입니다. 

'DEV > Django' 카테고리의 다른 글

[Django] SQL Lite Query 보는 방법  (0) 2022.05.01
[Django] CORS 오류  (0) 2022.04.23
[Django DRF] Serializer를 통한 데이터 검증  (0) 2022.04.11
[Django] Gunicorn, 배포를 위한 도구  (0) 2022.03.27
[Django] ManyToManyField  (0) 2022.03.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함