РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
288 of 818 menu

get_object_or_404

Функция get_object_or_404 применяется к менеджеру модели и возвращает один объект, соответствующий переданным условиям. Если объект не найден, функция автоматически генерирует исключение Http404. Это удобно для обработки ситуаций, когда запрашиваемый объект не существует, и позволяет избежать явной проверки на наличие объекта и ручного вызова исключения. Функция принимает менеджер модели и условия фильтрации в виде ключевых аргументов.

Синтаксис

get_object_or_404(klass, **kwargs)

Параметры функции:

klass - класс модели или менеджер, из которого нужно получить объект. В качестве первого аргумента можно передать модель, например, Article, или менеджер, например, Article.objects.

**kwargs - условия фильтрации в виде ключевых аргументов, где ключ - это имя поля с оператором поиска, а значение - условие отбора. Например, pk=1, slug='article-slug' или status='published'.

Пример

Давайте получим статью по её идентификатору:

from myapp.models import Article from django.shortcuts import get_object_or_404 article = get_object_or_404(Article, pk=1) print(article.title)

Результат выполнения кода:

"How to use get_object_or_404"

Если статья с идентификатором 1 существует, код выведет её заголовок. Если такой статьи нет, Django вернёт страницу с ошибкой 404.

Пример

Давайте получим статью по её слагу:

from myapp.models import Article from django.shortcuts import get_object_or_404 article = get_object_or_404(Article, slug='django-get-object-or-404') print(article.title)

Результат выполнения кода:

"Django get_object_or_404 function"

Пример

Давайте получим опубликованную статью по её идентификатору:

from myapp.models import Article from django.shortcuts import get_object_or_404 article = get_object_or_404(Article, pk=1, status='published') print(article.title)

Результат выполнения кода:

"Published article title"

В этом случае функция проверит, что статья с идентификатором 1 имеет статус 'published'. Если условия не выполняются, будет возвращена ошибка 404.

Пример . С передачей менеджера

Вместо модели можно передать менеджер:

from myapp.models import Article from django.shortcuts import get_object_or_404 article = get_object_or_404(Article.objects, pk=5) print(article.title)

Результат выполнения кода:

"Article with pk=5"

Пример . Использование во view

Рассмотрим типичное использование функции в контроллере:

from django.shortcuts import get_object_or_404, render from myapp.models import Article def article_detail(request, pk): article = get_object_or_404(Article, pk=pk) return render(request, 'article_detail.html', {'article': article})

Если статья не найдена, Django автоматически вернёт шаблон 404.html или стандартную страницу ошибки.

Смотрите также

  • функция get_list_or_404,
    которая возвращает список объектов или ошибку 404
  • функция render,
    которая отображает шаблон с контекстом данных
  • класс DetailView,
    который автоматически получает объект для детального просмотра
  • метод get,
    который получает один объект или вызывает исключение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить