Django rest框架,mixin和泛型之间有什么区别?
我正在学习Django rest框架。在我看来,有两个概念几乎相同,它们在不同的场景中使用Django rest框架,mixin和泛型之间有什么区别?,django,django-rest-framework,Django,Django Rest Framework,我正在学习Django rest框架。在我看来,有两个概念几乎相同,它们在不同的场景中使用 rest\u框架mixins我认为在使用视图集时会用到它们。 和rest\u框架泛型与APIViews一起使用 如果有人能给我解释一下这两个组件之间的区别,我将不胜感激。泛型和混合模块确实不同,但它们是相互关联的 DRF将ReSTful API/HTTP谓词行为与Django模型操作分离,并为每个操作组织一组抽象/基类。ReSTful功能位于APIView、GenericAPIView和ViewSetMi
rest\u框架mixins
我认为在使用视图集时会用到它们。
和rest\u框架泛型
与APIViews一起使用
如果有人能给我解释一下这两个组件之间的区别,我将不胜感激。泛型和混合模块确实不同,但它们是相互关联的 DRF将ReSTful API/HTTP谓词行为与Django模型操作分离,并为每个操作组织一组抽象/基类。ReSTful功能位于
APIView
、GenericAPIView
和ViewSetMixin
中。与模型相关的操作在mixin
模块中实现
然后,DRF利用Python的多重继承和“mixin”模式,将它们组合成更高级别的类,这些类既可用又可扩展
泛型视图和具体的ModelViewSet
除了通过mixin
类组合功能外,还继承自APIView
虽然与问题无关,但以下关于视图集的观察可能会有所帮助 DRF站点上的视图集简介中的以下内容可能会使事情看起来比实际情况更复杂 ViewSet类是一种基于类的视图,它不提供任何方法处理程序,如.get()或.post(),而是提供.list()和.create()等操作 ViewSet的方法处理程序仅在终结视图时使用.as_view()方法绑定到相应的操作 在许多情况下,与其直接继承
ViewSet
,不如继承ModelViewSet
并将其与DefaultRouter
相结合。ModelViewSet
通过各种mixin
类获得方法处理程序,而DefaultRouter
提供“操作”函数映射
总之,所有基本的REST操作都可以在给定的模型上执行,只需很少的代码。如果您有时间,我强烈建议您仔细阅读,它很长,但很值得一读,它应该澄清所有与mixin相关的疑问以及其他疑问。