中级创建自定义混合
通过允许创建自定义 mixin,DRF 提供了进一步自定义通用视图/视图集行为的机会。
如何:
要定义自定义 mixin,我们只需要创建一个继承自 object
的类。
假设我们要为名为 MyModel
的模型定义两个单独的视图。这些观点将共享相同的 queryset
和相同的 serializer_class
。我们将节省一些代码重复,我们将上面的内容放在一个 mixin 中,以便我们的视图继承:
-
my_app/views.py
(这不是唯一可用于放置我们自定义 mixin 的文件选项,但它不那么复杂):from rest_framework.generics import CreateAPIView, RetrieveUpdateAPIView from rest_framework.permissions import IsAdminUser class MyCustomMixin(object): queryset = MyModel.objects.all() serializer_class = MyModelSerializer class MyModelCreateView(MyCustomMixin, CreateAPIView): """ Only an Admin can create a new MyModel object """ permission_classes = (IsAdminUser,) Do view staff if needed... class MyModelCreateView(MyCustomMixin, RetrieveUpdateAPIView): """ Any user can Retrieve and Update a MyModel object """ Do view staff here...
结论:
Mixins 本质上是我们应用程序的可重用代码块。