Определение подходящего generic‑view для вывода статьи

Для одной статьи подходит Django DetailView: задайте model, template_name и context_object_name, а в маршруте передайте pk. При отсутствии объекта view вернёт 404.

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

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

Для одной статьи подходит Django DetailView: задайте model, template_name и context_object_name, а в маршруте передайте pk. При отсутствии объекта view вернёт 404.

Подробный разбор

Ответ с пояснениями

Условие

Требуется решить, какой generic‑view следует задействовать для отображения отдельной статьи по её идентификатору и передачи нужных данных в шаблон.

# views.py
# TODO: выбрать подходящую generic‑view (например, DetailView) для отображения Article

Ответ

Для одной статьи подходит Django DetailView: задайте model, template_name и context_object_name, а в маршруте передайте pk. При отсутствии объекта view вернёт 404.

Минимальный пример:

from django.views.generic import DetailView
from django.urls import path
from .models import Article

class ArticleDetailView(DetailView):
    model = Article
    template_name = 'articles/detail.html'
    context_object_name = 'article'

urlpatterns = [
    path('articles/<int:pk>/', ArticleDetailView.as_view()),
]

В шаблоне доступен article. Для дополнительных данных переопределяют get_context_data с вызовом super(). Для закрытых или неопубликованных статей ограничьте get_queryset и права доступа: сам DetailView не делает все записи публично допустимыми.

Источник: docs.djangoproject.com.

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

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

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

Подробнее