Представления на основе классов широко используются сообществом Django?

Я новичок в Django и Python, и, прочитав много, я решил не использовать глобальные функции в качестве представлений (возможно, потому, что я не привык к глобальным функциям, но в основном потому, что я хочу лучшего уровня повторного использования и предпочитаю иметь меньшие блоки кода). Проблема в том, что большинство приложений Django, которые я проверял, не используют подход, основанный на классах.

Это потому, что я проверяю код в неправильных местах (я начал с учебника Django, а затем на github)?

Я спрашиваю об этом, потому что в будущем я надеюсь работать с большим количеством программистов Django и не хочу с самого начала применять нестандартный подход.


person Demian    schedule 20.07.2012    source источник
comment
Изучите оба, потому что вы увидите оба. Используйте CBV, когда можете и когда это имеет смысл (если вы пишете более 100 строк кода только для того, чтобы заставить CBV работать, это, вероятно, означает, что было бы более эффективно использовать представление, основанное на функциях). Когда CBV работают, они работают хорошо и намного превосходят их, но всему есть пределы, и иногда лучше использовать функцию.   -  person Chris Pratt    schedule 20.07.2012
comment
@ChrisPratt спасибо, я думал использовать обе стратегии. Вы упомянули, что написали 100+ строк кода, чтобы заставить CBV работать, и я согласен, но я подумал, а как насчет написания 100+ строк кода в функции просмотра? У меня нет опыта работы с Django, но механизм шаблонов кажется не очень мощным по сравнению с другими фреймворками, поэтому я думаю, что мне придется написать больше кода в контроллере.   -  person Demian    schedule 20.07.2012
comment
Это не жесткое и быстрое число; Я только имел в виду, что если вы пишете много кода, чтобы заставить CBV работать так, как вам нужно, вам следует подумать, не будет ли более эффективным просто использовать представление, основанное на функциях. Движок шаблонов намеренно недостаточно мощный. Философия Django гласит, что смешивание HTML и кода — это плохо, и его следует избегать, насколько это возможно с точки зрения человека и разума. Таким образом, ваше представление должно настроить все, что потребуется шаблону, а затем шаблон в идеале просто выводит это на экран.   -  person Chris Pratt    schedule 21.07.2012


Ответы (1)


Одним из фактов является то, что представление на основе классов было добавлено в Django 1.3, поэтому, если вы планируете поддерживать старую версию Django, вам придется придерживаться представления функций, например, если вы хотите создать универсальное приложение и запустить его в GitHub или что-то подобное для использования другими людьми.

Что касается того, когда использовать представление на основе класса по сравнению с представлением функции, я думаю, что это будет зависеть от вашего варианта использования, мой совет заключается в том, что вы должны понимать преимущество каждого способа, и ИМХО вполне нормально иметь обе реализации в одном проекте.

Там была хорошая статья о Ник Коглан в ответ на другую замечательную статью CBV были ошибкой это стоит проверить.

Надеюсь, это было полезно :)

person mouad    schedule 20.07.2012
comment
Спасибо! это было действительно полезно, и мне понравились статьи (я думаю, у Люка Планта есть несколько очень хороших моментов, но он приходит к неверному выводу, потому что анализирует неполный набор сценариев). Как вы думаете, если я использую оба стиля в проекте, другим программистам будет проблематично работать с моим кодом, или это распространенный сценарий? Еще раз спасибо! - person Demian; 20.07.2012
comment
@Demian: Добро пожаловать, что касается вашего вопроса, я думаю, что если кто-то хочет использовать Django (›= 1.3), он должен изучить оба стиля (так же, как и ваши товарищи по команде), и если вы используете два стиля (CBV против FBV) в вашем проекте (что, ИМХО, является хорошей практикой), я думаю, что может быть проблематично объяснить, почему вы решили использовать X вместо Y, поэтому у вас должна быть веская причина, чтобы дать им :) понимание преимущества каждого над другим. - person mouad; 21.07.2012
comment
Хорошо, что последняя упомянутая статья была обновлена, и автор не считает, что CBV всегда плохи. На самом деле, он признает, что есть случаи, когда CVB сияет. :) - person MatheusJardimB; 27.09.2016