Выбор ответа Middle Django: устройство обновлено

FBV против CBV

Вопрос

Чем вьюхи-классы (CBV) Django отличаются от вьюх-функций (FBV)?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: CBV дают наследование, миксины и generic-вьюхи, FBV проще и явнее. Generic CBV (ListView, CreateView) закрывают типовой CRUD парой строк, а поведение настраивается переопределением методов и миксинами вроде LoginRequiredMixin.

Варианты ответа

  1. CBV работают быстрее: класс создаётся один раз на процесс, а функция на запрос
  2. FBV не поддерживают POST-запросы без декоратора @require_http_methods
  3. CBV дают наследование, миксины и generic-вьюхи, FBV проще и явнееправильный ответ
  4. CBV нельзя использовать с шаблонами, они возвращают только JSON-ответы

Разбор

Generic CBV (ListView, CreateView) закрывают типовой CRUD парой строк, а поведение настраивается переопределением методов и миксинами вроде LoginRequiredMixin. Цена: логика размазана по иерархии классов, и её сложнее читать. FBV явные и обрабатывают любые методы. Разницы в скорости нет, шаблоны работают с обоими.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.