Короткий ответ FBV — обычная функция request -> response, проще для чтения в простых случаях; CBV — класс с методами get/post и т. п., удобен для переиспользования логики через наследование и миксины. Как это работает подробнее В FBV вся логика для всех HTTP-методов обычно находится в одной функции с проверкой request.method. В CBV Django вызывает метод as_view(), который создаёт диспетчер, и далее вызывается метод класса, совпадающий по имени с HTTP-методом (get, post, put...). Пример кода Что использовать на практике Практика. FBV проще читать для небольших, не повторяющихся обработчиков. CBV и generic views (ListView, CreateView) сокращают код для типовых CRUD-страниц за счёт наследования, но добавляют косвенность — нужно знать, какие методы и атрибуты переопределять. Подводные камни Риск. Использование generic CBV «на всякий случай» там, где нужна однократная простая логика, что усложняет чтение кода; обратная ситуация — копирование одинакового кода в несколько FBV вместо выделения общей CBV/миксина.