天天看点

25 mixin

mixin

类名称 方法 功能
ListModelMixin .list(request, *args, **kwargs) 查询所有数据
CreateModelMixin .create(request, *args, **kwargs) 创建单个
RetrieveModelMixin .retrieve(request, *args, **kwargs) 查询单个
UpdateModelMixin .update(request, *args, **kwargs) 更新
DestroyModelMixin .destroy(request, *args, **kwargs) 销毁删除

mixin配合二级视图generic使用

view

from rest_framework.mixins import ListModelMixin,CreateModelMixin
class BookInfoMixinGenericView(GenericAPIView,ListModelMixin,CreateModelMixin):
    queryset=BookInfo.objects.all()
    serializer_class=BookInfoSerializer
    def get(self,request):
        return self.list(request)
    def post(self,request):
        return self.create(request)

from rest_framework.mixins import RetrieveModelMixin,UpdateModelMixin,DestroyModelMixin
class BookInfoMixinGenericDetailView(GenericAPIView,RetrieveModelMixin,UpdateModelMixin,DestroyModelMixin):
    queryset = BookInfo.objects.all()# 也是必须填写 后面的get_object()是从这里获取
    serializer_class = BookInfoSerializer
    def get(self,request,pk):
        return self.retrieve(request)

    # 更新单个
    def put(self,request,pk):
        return self.update(request)

    # 删除单个
    def delete(self,request,pk):
        return self.destroy(request)
      

  url

from django.urls import path,include
from . import views

urlpatterns=[
    path('books/',views.BookInfoView.as_view()),
    path('books/<int:id>', views.BookInfoDetailView.as_view()),
    path('generic_view_books/', views.BookInfoGenericView.as_view()),
    path('generic_view_books/<int:pk>', views.BookInfoGenericDetailView.as_view()),
    path('mixin_generic_view_books/', views.BookInfoMixinGenericView.as_view()),
    path('mixin_generic_view_books/<int:pk>', views.BookInfoMixinGenericDetailView.as_view()),
]