Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django rest框架,mixin和泛型之间有什么区别?_Django_Django Rest Framework - Fatal编程技术网

Django rest框架,mixin和泛型之间有什么区别?

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

我正在学习Django rest框架。在我看来,有两个概念几乎相同,它们在不同的场景中使用

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相关的疑问以及其他疑问。