中级创建自定义混合

通过允许创建自定义 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 本质上是我们应用程序的可重用代码块。