Используйте get_object_or_404 с нужным фильтром и доступным пользователю queryset. При отсутствии записи Django вернёт HTTP 404.
Обеспечение корректного ответа при отсутствии записи модели
Используйте get_object_or_404 с нужным фильтром и доступным пользователю queryset. При отсутствии записи Django вернёт HTTP 404.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо внедрить проверку: если запрашиваемый объект модели не найден (например, запись с указанным slug отсутствует), следует корректно завершить запрос, например вернуть страницу с ошибкой 404.
# views.py
# TODO: добавить обработку случая, когда объект модели не найден (например, через get_object_or_404)
Ответ
Используйте get_object_or_404 с нужным фильтром и доступным пользователю queryset. При отсутствии записи Django вернёт HTTP 404.
from django.shortcuts import get_object_or_404, render
from .models import Article
def article_detail(request, slug):
article = get_object_or_404(Article, slug=slug)
return render(request, 'article.html', {'article': article})
Пример предполагает, что модель имеет уникальный slug. Для закрытого или ещё не опубликованного контента передавайте предварительно ограниченный queryset, а не все записи: существование объекта не означает право на его просмотр.
Не перехватывайте все исключения как 404. Ошибка соединения с БД или некорректный запрос должны оставаться серверной ошибкой, иначе диагностика станет невозможной. При неуникальном фильтре отдельно решите проблему нескольких совпадений.