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()),
]