25 mixin

mixin

  • mixin类提供用于提供基本用户行为(列表视图和详情视图)的操作

  • 配合二级视图genericAPIView使用

类名称方法功能
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()),
]

  

posted @ 2021-11-04 13:58  彡心如止水彡  阅读(37)  评论(0)    收藏  举报