继承《Django Rest Framework 序列化接口(PUT与Delete)设计 (前期版)! 》代码
修改views.py代码
'''3.视图组件优化方式一:使用mixins优化'''
#导入mixins模块
from rest_framework.mixins import (
CreateModelMixin, # 增删改查复
DestroyModelMixin,
UpdateModelMixin,
ListModelMixin,
RetrieveModelMixin
)
#导入已经写好的序列化类
from .serizlizer import BookSerizlizer
#导入GenericAPIView,它继承APIView
from rest_framework.generics import GenericAPIView
class BookView(ListModelMixin, CreateModelMixin, GenericAPIView):
#固定下来的类变量
queryset = models.Book.objects.all()
serializer_class = BookSerizlizer
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
return self.create(request, *args, **kwargs)
#对单条数据做修改urls.py :"re_path(r'book/(?P<pk>\d+)/$',views.BookFilterView.as_view())",此处匹配中写PK它会自动识别
class BookFilterView(RetrieveModelMixin, GenericAPIView, DestroyModelMixin, UpdateModelMixin):
queryset = models.Book.objects.all()
serializer_class = BookSerizlizer
def get(self, request, *args, **kwargs, ):
return self.retrieve(request, *args, **kwargs)
def delete(self, request, *args, **kwargs):
return self.destroy(request, *args, **kwargs)
def put(self, request, *args, **kwargs, ):
return self.update(request,*args, **kwargs, )
from django.contrib import admin
from django.urls import path,re_path
from books import views
urlpatterns = [
path('admin/', admin.site.urls),
path('book/',views.BookView.as_view()),
#对于单条指定数据的put,get,delete,post方法定义的url
re_path(r'book/(?P<pk>\d+)/$',views.BookFilterView.as_view())
]