中級建立自定義混合

通過允許建立自定義 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 本質上是我們應用程式的可重用程式碼塊。