Определение подходящего способа получения статьи по её ID

Используйте get_object_or_404(Post, pk=post_id), затем передайте объект в render(). При отсутствии записи helper возвращает корректную HTTP-ошибку 404 вместо необработанного DoesNotExist.

Короткий ответ

Что ответить на собеседовании

Используйте 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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее