我正在学习 Django Rest Framework。并且有两个概念在我看来几乎是一样的,并且用于不同的场景。rest_framework mixins
我认为当我们使用 View 集时会使用它们。
和 rest_framework generics
与 APIViews 一起使用。
这两个组件有什么区别?
最佳答案
generics
和 mixin
模块确实不同,但它们是相互关联的。
Django Rest Framework (DRF) 将 ReSTful API/HTTP 动词行为与 Django 模型操作分开,并为每个类组织了一组抽象/基类。 ReSTful 功能位于 APIView
, GenericAPIView
和 ViewSetMixin
. Model相关操作在mixin
中实现模块。
然后,DRF 使用 Python 的多重继承和“mixin”模式,将它们组合成既可用又可扩展的更高级别的类。
通用 View 和具体 View ModelViewSet
两者都继承自 APIView
除了通过 mixin
编写功能之外类。
虽然与问题无关,但以下关于 ViewSets 的观察可能会有所帮助......
以下是 DRF 站点上对 ViewSets 的介绍,它可能会使事情看起来比实际情况更复杂......
A ViewSet class is simply a type of class-based View, that does not provide any method handlers such as .get() or .post(), and instead provides actions such as .list() and .create().
The method handlers for a ViewSet are only bound to the corresponding actions at the point of finalizing the view, using the .as_view() method.
而不是继承
ViewSet
直接,在很多情况下,继承ModelViewSet
最有意义。并将其与 DefaultRouter
结合使用. ModelViewSet
通过各种 mixin
获取方法处理程序类,以及 DefaultRouter
提供“ Action ”功能映射。结合起来,所有基本的 REST 操作都可以在给定的模型上执行,只需很少的代码。
关于django - mixin 和泛型有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55564534/