Модули generics
и mixin
действительно разные, но они взаимосвязаны.
Django Rest Framework (DRF) отделяет поведение команды ReSTful API/HTTP от операций модели Django и организует набор абстрактных/базовых классов для каждого из них. Функциональность ReSTful находится в APIView
, GenericAPIView
и ViewSetMixin
. Операции, связанные с Моделью, реализованы в модуле mixin
.
Затем DRF использует множественное наследование Python и шаблон миксина, чтобы объединить их вместе в классы более высокого уровня, которые можно использовать и расширять.
Общие представления и конкретные ModelViewSet
оба наследуют от APIView
в дополнение к составлению функциональности через классы mixin
.
Хотя это и не связано с вопросом, может оказаться полезным следующее наблюдение о ViewSet...
Ниже приведено введение в ViewSets на сайте DRF, из-за которого все может показаться более сложным, чем оно есть на самом деле...
Класс ViewSet — это просто тип представления на основе класса, который не предоставляет никаких обработчиков методов, таких как .get() или .post(), а вместо этого предоставляет такие действия, как .list() и .Создайте().
Обработчики методов для ViewSet привязаны к соответствующим действиям только в момент завершения представления с использованием метода .as_view().
Вместо прямого наследования ViewSet
во многих случаях имеет смысл унаследовать ModelViewSet
и объединить его с DefaultRouter
. ModelViewSet
получает обработчики методов через различные классы mixin
, а DefaultRouter
обеспечивает сопоставление функции "действие".
В сочетании все основные действия REST могут быть выполнены с данной Моделью с очень небольшим количеством кода.
person
Dwight Gunning
schedule
08.04.2019