Выбор ответа Middle Django: устройство обновлено
FBV против CBV
Вопрос
Чем вьюхи-классы (CBV) Django отличаются от вьюх-функций (FBV)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: CBV дают наследование, миксины и generic-вьюхи, FBV проще и явнее. Generic CBV (ListView, CreateView) закрывают типовой CRUD парой строк, а поведение настраивается переопределением методов и миксинами вроде LoginRequiredMixin.
Варианты ответа
- CBV работают быстрее: класс создаётся один раз на процесс, а функция на запрос
- FBV не поддерживают POST-запросы без декоратора
@require_http_methods - CBV дают наследование, миксины и generic-вьюхи, FBV проще и явнееправильный ответ
- CBV нельзя использовать с шаблонами, они возвращают только JSON-ответы
Разбор
Generic CBV (ListView, CreateView) закрывают типовой CRUD парой строк, а поведение настраивается переопределением методов и миксинами вроде LoginRequiredMixin. Цена: логика размазана по иерархии классов, и её сложнее читать. FBV явные и обрабатывают любые методы. Разницы в скорости нет, шаблоны работают с обоими.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.