Этот вопрос проверяет понимание class-based views (CBV) в Django, которые позволяют структурировать обработку запросов с помощью классов, а не функций, что упрощает повторное использование кода и реализацию общих паттернов.
Class-based views (CBV) — это подход в Django для обработки HTTP-запросов с использованием классов вместо функций. Они предоставляют структурированный способ организации логики представлений, позволяя разработчикам наследовать и переопределять методы для настройки поведения. CBV особенно полезны для реализации стандартных операций, таких как создание, чтение, обновление и удаление (CRUD) объектов модели.
get_queryset, get_context_data).ListView, DetailView, CreateView.Допустим, у нас есть модель Article, и мы хотим отобразить список статей. С CBV это делается в несколько строк:
from django.views.generic import ListView
from .models import Article
class ArticleListView(ListView):
model = Article
template_name = 'articles/article_list.html'
context_object_name = 'articles'
paginate_by = 10
def get_queryset(self):
# Можно фильтровать или сортировать статьи
return Article.objects.filter(is_published=True).order_by('-created_at')
В этом примере ListView автоматически получает queryset из модели, передаёт его в шаблон и добавляет пагинацию. Метод get_queryset позволяет кастомизировать выборку данных.
CBV широко используются в Django-приложениях для:
Вывод: Class-based views стоит применять, когда нужно быстро реализовать стандартные операции CRUD или когда проект требует повторного использования кода и чёткой структуры. Они особенно полезны для middle- и senior-разработчиков, работающих над крупными приложениями.