На данный момент потихоньку делаю сайт, для себя. CBV никогда ранее не использовал, но знал про такую штуку :) И, что греха таить, с нетерпением ждал момента, когда я смогу применить вьюхи на классах.
Да, я читал несколько статей (кстати, инфы на русском не много, и она довольно давняя, видимо ничего не поменядось с тех пор). Читал и мнения о CBV. В том числе и перевод на хабре от одного из разработчиков, где он пишет о недостатках CBV и прямо советует не юзать такой подход. Но глядя на некоторые комменты, в которых пытались доказать обратное, а так же на свои некоторые вьюхи на функциях, я, в душе, сохранял оптимизм и не отказывался от цели - попробовать! :)
Итак, в одной части моего проекта, необходимо выводить список сущностей, можно назвать их статьями. Статьи имеют принадлежность к определенной категории, так же к ним есть метки, так же есть несколько неизменных видов статей. Каждая характеристика выводится в теле статьи и имеет ссылку по которым можно фильтровать статьи и получать новый список. Сам же список, то есть его шаблон, всегда неизменные. Он, шаблон, используется один. Изменяется только заголовок и режим текущего фильтра.
Сделал вьюхи на функциях, их три - общий список, список по категории, список по тагу, соответственно три записи в урл для их вызова. Да, по видам статьи еще могут отбираться внутри каждой вьюхи. Вынес общие части в функции. Все работает, все вроде хорошо... Запросы, контекст, и проч, контролирую с помощью django-debug-toolbar
(прекрасное приложение), то есть видно, что все происходит как надо, запросы идут те какие я хочу, контекст отдается тот что надо.
Настало время пробовать CBV. То что сделано не убирал, а просто рядом стал писать на CBV пытаясь сделать так же (по другому урлу просто)
Конечно, первые ощущения - полный восторг! Вот оно, то что наконец избавит от грусти при взгляде на некоторый свой код :)
Не считая небольших ляпов, на первых порах, сильных затруднений не возникало. Функционал, реализованный ранее для одной из вьюх старого типа, стал повторяться на CBV...
Но... решил глянуть в контекст, который отдается в шаблон. Обнаружил, что туда пихаются совершенно непонятные вещи, котрые я не использую. И чем дальше я приближался к повторению старого функционала, тем больше! Да, наверное можно разобраться что для чего и на каком этапе туда суется. Но это уже отнюдь не просто, и, подозреваю, что даже разобравшись, я мало что там поменяю.
Я понял, что потерял контроль над формированием контекста.
По мере усложнения запросов я так же заметил, что вдруг что-то пошло не так, появились лишние запросы, а которые должны быть - пропали (хотя все фурычило как надо, картинка и ссылки, на результирующей странице, получались теже).
Я понял, что потерял контроль и над формированием запросов.
Повторюсь - наверное, можно во всем разобраться. И такие попытки я предпринимал, убеждая себя, что это вовсе не сложно, надо лишь поковыряться поглубже :) Но все чаще возникал вопрос - зачем? если и так все работает, подозреваю что быстрее чем на CBV, и что самое главное - разобраться в тексте уже имеющихся вьюх можно за 5 минут :) ... кхм, чего нельзя сказать про вьюхи CBV.
Пока, вопщем, отложил я CBV в сторону, сохранив в душе надежду, что когда-нибудь, вернусь к ним снова :)
А у вас как с CBV? :)
Updated 26 Feb. 2016, 12:00 by EvgIq.