■ JITHub 개발일지 41일차
□ TIL(Today I Learned) ::
DRF, get_object_or_404, get_list_or_404
- Problem) 여러 개의 Article을 가져오고 싶은데 objects.all()이 아니라 리턴 결과가 비어있을 경우 404에러를 발생시킬 수 있도록 get_object_or_404를 사용해보려 했다. 저장된 articles를 가져와야하는데 get_object_or_404.all()을 사용하려니 multipleObjectsReturned at 에러가 발생했다.
- Reason) 이유를 살펴보니 get_object_or_404는 하나의 object만을 가져올 때 사용하는 모듈이었다. 즉, 여러개의 object들을 호출할 수 없었다.
- Solution) 여러 개의 object를 불러오고 싶을 때에는 get_list_or_404를 사용한다.
- Problem) 이상하게도, rest_framework.generic에서는 get_object_or_404 모듈을 import하여 사용할 수 있었는데 get_list_or_404는 import가 불가했다.
- Solution) get_list_or_404를 사용할 수 있었던 또 다른 경로는 render나 redirect를 불러올 수 있었던 django의 내장함수인 django.shortcuts에서 가져올 수 있었다.
아래와 같이 다시 정리해보았다.
# 임포트하기(1)
from django.shortcuts import get_list_or_404, get_object_or_404
# 임포트하기(2)
from rest_framework.generic import get_object_or_404
article = Article.objects.all()
# 하나만 가져올 때
article = get_object_or_404(Article, id=article_id)
# 여러 개를 가져올 때(전체)
article = get_list_or_404(Article)
반응형
'DEV > Web 개발' 카테고리의 다른 글
Web 개발 :: Django rest framework, front-end_TIL#42 (0) | 2022.11.02 |
---|---|
Web 개발 :: 파이썬 Django Rest Framework(8) _ 게시글 생성 (0) | 2022.11.01 |
Web 개발 :: 파이썬 Django Rest Framework(7) _ 회원가입, 로그인(Front-End) (0) | 2022.10.31 |
Web 개발 :: 파이썬 Django Rest Framework(6) _ token, permission (0) | 2022.10.30 |
파이썬/머신러닝 웹 프로그래밍 :: 10월 다섯째주 WIL #09 (0) | 2022.10.29 |
댓글