Используйте get_object_or_404(Post, pk=post_id), затем передайте объект в render(). При отсутствии записи helper возвращает корректную HTTP-ошибку 404 вместо необработанного DoesNotExist.
Определение подходящего способа получения статьи по её ID
Используйте get_object_or_404(Post, pk=post_id), затем передайте объект в render(). При отсутствии записи helper возвращает корректную HTTP-ошибку 404 вместо необработанного DoesNotExist.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо решить, какой вспомогательный метод Django‑view следует применить, чтобы по идентификатору, переданному в URL, извлечь запись статьи из базы данных и передать её в шаблон для отображения.
# views.py
# TODO: выбрать подходящий метод (например, get_object_or_404) для получения Post по ID
Ответ
Используйте get_object_or_404(Post, pk=post_id), затем передайте объект в render(). При отсутствии записи helper возвращает корректную HTTP-ошибку 404 вместо необработанного DoesNotExist.
Пример view:
from django.shortcuts import get_object_or_404, render
from .models import Post
def post_detail(request, post_id):
post = get_object_or_404(Post, pk=post_id)
return render(request, 'posts/detail.html', {'post': post})
Маршрут должен передавать post_id. Если доступны не все статьи, передайте предварительно ограниченный QuerySet: helper не заменяет проверку публикации, владельца и прав пользователя. Поиск по primary key также исключает неоднозначность нескольких подходящих записей.
Источник: docs.djangoproject.com.