Django Generic Views, руководство по дизайну

Я согласен с тем, что вопрос немного субъективен и что он не указывает на определенные технические сомнения/запросы, но я хотел знать.

Я новичок в django, после 3-4 месяцев работы с приложениями в django я пытаюсь копнуть глубже. В настоящее время я читаю книгу Джеймса Бреннета, в которой он показывает, как использовать общие представления, но когда я на https://docs.djangoproject.com/en/dev/topics/ i см. общие представления устарели.

С точки зрения «лучшего дизайна», как оценивается использование общих представлений?

Считается ли хорошей практикой использование общих представлений?

Если да, то почему тогда django унижает его?

Если нет, то что еще рекомендуется?

Спасибо!


person whatf    schedule 07.12.2011    source источник


Ответы (1)


Старые универсальные представления устарели, поскольку они были заменены 'универсальными представлениями на основе классов':
https://docs.djangoproject.com/en/dev/topics/class-based-views./

Если у вас много представлений, которые многократно выражают один и тот же шаблон, например, набор представлений CReate/Update/Delete (CRUD) для нескольких моделей... где большая часть кода представления одинакова, но меняются только некоторые особенности, например класс модели и окончательный URL-адрес перенаправления... вот где общие представления имеют смысл.

Цель состоит в том, чтобы быть СУХИМ (не повторяться)... т.е. писать код в одном месте и повторно использовать, выявлять и исправлять ошибки в одном месте и т. д.

person Anentropic    schedule 07.12.2011
comment
@ user902620: Преимущество универсальных представлений на основе классов заключается в том, что они действительно являются универсальными. С общими представлениями в старом стиле они служили больше как строительные леса в Rails. С ними можно было что-то быстро запустить, но вскоре вам пришлось писать свои собственные настраиваемые представления. С помощью универсальных представлений на основе классов вы можете наследовать базовый тип представления, который вам нужен, а затем добавлять все свои пользовательские функции без необходимости переписывать какой-либо базовый код. - person Chris Pratt; 07.12.2011