새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Github
  • 자기주도학습
  • 스파르타코딩클럽
  • 프로그래머스
  • Python
  • TodayILearned
  • Selenium 4
  • 코딩
  • 코린이
  • 내일배움캠프
  • 개발일지
  • 내일배움카드
  • AI트랙
  • 국비지원
  • til
  • docker
  • 내일배움단
  • machine learning
  • 코딩프로젝트
  • portfolio

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

DevLog

[개념완성] get_object_or_404

2023. 4. 21. 22:58

Django의 get_object_or_404 함수

웹 개발 과정에서 데이터를 검색하거나 처리할 때, 일반적으로 원하는 객체를 찾지 못하는 경우가 발생합니다. 이러한 상황을 처리하기 위해 Django에서는 get_object_or_404 함수를 제공합니다. 이 글에서는 이 함수의 사용 이유와 그와 관련된 예시에 대해 설명합니다.

get_object_or_404 함수 사용 이유

get_object_or_404 함수는 다음과 같은 이유로 사용됩니다:

  1. 코드 간결성 : 복잡한 오류 처리 코드를 작성할 필요 없이, 간단한 함수 호출로 처리할 수 있습니다.
  2. 일관성 : 웹 애플리케이션 전체에서 일관된 방식으로 오류를 처리할 수 있습니다.
  3. 사용자 경험 : 사용자에게 적절한 오류 메시지를 제공함으로써, 사용자가 어떤 문제가 발생했는지 명확하게 이해할 수 있게 해줍니다.
  4. 코드 재사용 : 중복 코드를 줄이고, 특정 오류 처리 방식을 한 곳에서 정의함으로써 코드 유지 보수를 용이하게 합니다.

예시 : 기본 사용법

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
    'DevLog' 카테고리의 다른 글
    • [개발환경셋팅] 1. Django 프로젝트 Boilerplate 만들기
    • [개념완성] Django INSTALLED_APPS 앱등록
    • [고찰] 'NamedTuple' 클래스의 해결되지 않은 속성 참조 'multi_hand_landmarks'
    • [Tools] cv2.Canny()
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바