Подтвердить что ты не робот

Представления на основе класса

Я всегда использую FBV (Function Based Views) при создании приложения django, потому что он очень прост в обращении. Но большинство разработчиков заявили, что лучше использовать CBVs (Class Based Views) и использовать только FBV, если это сложные представления, которые могут быть больны для реализации с CBV.

Почему? В чем преимущества использования CBV?

4b9b3361

Ответ 1

Единственным существенным преимуществом является наследование. По большому проекту, вероятно, у вас будет много похожих взглядов. Вместо того, чтобы писать один и тот же код снова и снова, вы можете просто наследовать свои представления из базового представления.

Также django поставляется с коллекцией общих классов классов, которые могут использоваться для выполнения некоторых из наиболее распространенных задач. Например, класс DetailView используется для передачи одного объекта с одной из ваших моделей, визуализации его с помощью шаблона и возврата ответа HTTP. Вы можете подключить его прямо к своему URL-адресу.

url(r'^author/(?P<pk>\d+)/$', DetailView.as_view(model=Author)),

Или вы можете расширить его с помощью специальных функций

class SpecialDetailView(DetailView):
    model = Author
    def get_context_data(self, *args, **kwargs):
        context = super(SpecialDetailView, self).get_context_data(*args, **kwargs)
        context['books'] = Book.objects.filter(popular=True)
        return context

Теперь вашему шаблону будет передан набор объектов книги для рендеринга.

Хорошим местом для начала является хорошее чтение docs.

Обновление

ccbv.co.uk содержит исчерпывающую и удобную информацию о просмотренных классах, которые у вас уже есть.

Ответ 2

НЕКОТОРЫЕ СЛОВА ИЗ ДВУХ СЦЕПОВ

Совет Альтернативный Apporach - Пребывание с FBV

Некоторые разработчики предпочитают ошибаться на стороне использования FBV для большинства просмотров и CBV только для представлений, которые необходимо подклассифицировать. Эта стратегия также прекрасна.

Ответ 3

Когда я начал с DJango, я никогда не использовал CBV из-за их кривой обучения и немного сложной структуры. Быстрая перемотка вперед в течение двух лет, я использую FBV только в нескольких местах. Где я уверен, что код будет очень простым и будет оставаться простым.

Основное преимущество CBV и множественного наследования, которое приходит вместе с ними, заключается в том, что я могу полностью избежать написания сигналов, вспомогательных методов и копирования кода вставки. Особенно в тех случаях, когда приложение выполняет гораздо больше, чем обычные операции CRUD. Представления с множественным наследованием в несколько раз легче отлаживать код с помощью сигналов и вспомогательных методов, особенно если это неизвестная база кода.

Помимо CBV с множественным наследованием, предоставляют различные методы для диспетчеризации, получения шаблонов, обработки разных типов запросов, передачи переменных контекста шаблона, проверки форм и многое другое из коробки. Они делают код модульным и, следовательно, поддерживаемым.

Ответ 4

Представления, основанные на классах, превосходны, если вы хотите реализовать полнофункциональные операции CRUD в приложении Django, и для реализации с использованием представлений, основанных на функциях, потребуется мало времени и усилий.

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

Я создал простое приложение CRUD, использующее представления на основе классов, которые являются живыми. Посетите http://filtron.pythonanywhere.com/view/ и наслаждайтесь. Тогда вы узнаете его важность.

Ответ 5

Некоторые представления лучше всего реализованы как CBV, а другие лучше всего реализованы как FBV.

Если вы не уверены, какой метод выбрать, см. Следующую таблицу:

enter image description here