Django의 get_object_or_404 함수
웹 개발 과정에서 데이터를 검색하거나 처리할 때, 일반적으로 원하는 객체를 찾지 못하는 경우가 발생합니다. 이러한 상황을 처리하기 위해 Django에서는 get_object_or_404 함수를 제공합니다. 이 글에서는 이 함수의 사용 이유와 그와 관련된 예시에 대해 설명합니다.
get_object_or_404 함수 사용 이유
get_object_or_404 함수는 다음과 같은 이유로 사용됩니다:
- 코드 간결성 : 복잡한 오류 처리 코드를 작성할 필요 없이, 간단한 함수 호출로 처리할 수 있습니다.
- 일관성 : 웹 애플리케이션 전체에서 일관된 방식으로 오류를 처리할 수 있습니다.
- 사용자 경험 : 사용자에게 적절한 오류 메시지를 제공함으로써, 사용자가 어떤 문제가 발생했는지 명확하게 이해할 수 있게 해줍니다.
- 코드 재사용 : 중복 코드를 줄이고, 특정 오류 처리 방식을 한 곳에서 정의함으로써 코드 유지 보수를 용이하게 합니다.
예시 : 기본 사용법
Django에서 get_object_or_404 함수의 기본 사용법은 다음과 같습니다:
from django.shortcuts import get_object_or_404
def my_view(request):
obj = get_object_or_404(MyModel, pk=1)
이 예제는 아래 코드와 동일한 기능을 수행합니다:
from django.http import Http404
def my_view(request):
try:
obj = MyModel.objects.get(pk=1)
except MyModel.DoesNotExist:
raise Http404("No MyModel matches the given query.")
다른 사용법
get_object_or_404 함수는 모델 클래스, 매니저, 쿼리셋 인스턴스를 인자로 받을 수 있습니다. 아래 예시들은 다양한 사용법을 보여줍니다:
QuerySet instance 사용:
queryset = Book.objects.filter(title__startswith='M') get_object_or_404(queryset, pk=1)
manager 사용:
get_object_or_404(Book.dahl_objects, title='Matilda')
related manager 사용:
author = Author.objects.get(name='Roald Dahl') get_object_or_404(author.book
작성 참조 : https://docs.djangoproject.com/en/4.1/topics/http/shortcuts/#get-object-or-404
'DevLog' 카테고리의 다른 글
[개발환경셋팅] 1. Django 프로젝트 Boilerplate 만들기 (1) | 2023.05.08 |
---|---|
[개념완성] Django INSTALLED_APPS 앱등록 (0) | 2023.05.01 |
[고찰] 'NamedTuple' 클래스의 해결되지 않은 속성 참조 'multi_hand_landmarks' (0) | 2023.03.06 |
[Tools] cv2.Canny() (0) | 2023.03.06 |
[Troubleshooting] Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/expo-cli' (0) | 2023.01.21 |