django - mixin 和泛型有什么区别?

标签 django django-rest-framework mixins django-generic-views

我正在学习 Django Rest Framework。并且有两个概念在我看来几乎是一样的,并且用于不同的场景。rest_framework mixins我认为当我们使用 View 集时会使用它们。
rest_framework generics与 APIViews 一起使用。
这两个组件有什么区别?

最佳答案

genericsmixin模块确实不同,但它们是相互关联的。
Django Rest Framework (DRF) 将 ReSTful API/HTTP 动词行为与 Django 模型操作分开,并为每个类组织了一组抽象/基类。 ReSTful 功能位于 APIView , GenericAPIViewViewSetMixin . 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/

相关文章:

'NoneType' 类型的 Python 参数不可迭代

typescript - 在 Typescript 中混入抽象基类

css - 想让Sass mixin更健壮(字体速记)

python - 在 Django 中提供动态生成的 ZIP 文件

python - Django-cms 显示菜单 : How to show menu under current page?

python - virtualenv 的跨平台接口(interface)

Django:TemplateDoesNotExist (rest_framework/api.html)

python - 对象 'user' 没有属性 'create' - Django

json - Django RestFramework 分组依据

meteor - Scss编译错误: no mixin named transition