티스토리 뷰
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")
모델을 불러오며 오류가 나면 한번에 잡을 수 있습니다.
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
링크
TAG
- for-else
- sql lite
- conTeXt
- go
- 방금그곡
- leetcode
- stdout
- 소프트웨어 장인
- Two Scoops of Django
- dfs
- gunicorn
- 문자열 뒤집기
- 의대 신경학 강의
- taggit
- 프로그래머스
- query
- ManyToMany
- 파이썬
- 백준
- 팰린드롬수
- 독후감
- django
- go context
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함