列表视图扩展类,提供list(request, *args, **kwargs)
方法快速实现列表视图,返回200状态码。
该Mixin的list方法会对数据进行过滤和分页。
from rest_framework import mixins
class BookListView(mixins.ListModelMixin,GenericAPIView):
"""GenericAPIView实现获取所有图书信息的接口"""
# 指定反序列化器类
serializer_class = BookInfoSerializer
# 指定查询集 queryset负责接受查询集
queryset = BookInfo.objects.all()
def get(self,request):
return self.list(request)
url地址设置:
url(r'^books/$',new_views.BookListView.as_view()),
创建视图扩展类,提供create(request, *args, **kwargs)
方法快速实现创建资源的视图,成功返回201状态码。
如果序列化器对前端发送的数据验证失败,返回400错误。
# 子类视图ListAPIView
class BookListView(ListAPIView):
"""
ListAPIView实现获取所有图书信息的接口
ListAPIView 自己写了 def get()..... ret...
所以我们不用在写
"""
# 指定反序列化器类
serializer_class = BookInfoSerializer
# 指定查询集 queryset负责接受查询集
queryset = BookInfo.objects.all()
url不变
执行效果:
详情视图扩展类,提供retrieve(request, *args, **kwargs)
方法,可以快速实现返回一个存在的数据对象。
如果存在,返回200, 否则返回404。
class BookDetailView(mixins.RetrieveModelMixin,GenericAPIView):
"""GenericAPIView查询单一的数据的接口"""
# 指定反序列化器类
serializer_class = BookInfoSerializer
# 指定查询集 queryset负责接受查询集
queryset = BookInfo.objects.all()
def get(self,request,pk):
return self.retrieve(request)
url设置如下:
url(r'^books/(?P\d+)/$', new_views.BookDetailView.as_view()),
效果如图:
更新视图扩展类,提供update(request, *args, **kwargs)
方法,可以快速实现更新一个存在的数据对象。
同时也提供partial_update(request, *args, **kwargs)
方法,可以实现局部更新。
成功返回200,序列化器校验数据失败时,返回400错误。
class BookUpdateView(mixins.UpdateModelMixin,GenericAPIView):
"""UpdateModelMixin获取数据"""
# 指定反序列化器类
serializer_class = BookInfoSerializer
# 指定查询集 queryset负责接收查询集
queryset = BookInfo.objects.all()
def put(self, request, *args, **kwargs):
return self.update(request, *args, **kwargs)
删除视图扩展类,提供destroy(request, *args, **kwargs)
方法,可以快速实现删除一个存在的数据对象。
成功返回204,不存在返回404。
class BookDestroyView(mixins.DestroyModelMixin,GenericAPIView):
"""UpdateModelMixin获取数据"""
# 指定反序列化器类
serializer_class = BookInfoSerializer
# 指定查询集 queryset负责接收查询集
queryset = BookInfo.objects.all()
def delete(self,request, *args, **kwargs):
return self.destroy(request, *args, **kwargs)
提供 post 方法
继承自: GenericAPIView、CreateModelMixin
提供 get 方法
继承自:GenericAPIView、ListModelMixin
提供 get 方法
继承自: GenericAPIView、RetrieveModelMixin
提供 delete 方法
继承自:GenericAPIView、DestoryModelMixin
提供 put 和 patch 方法
继承自:GenericAPIView、UpdateModelMixin
提供 get、put、patch方法
继承自: GenericAPIView、RetrieveModelMixin、UpdateModelMixin
提供 get、put、patch、delete方法
继承自:GenericAPIView、RetrieveModelMixin、UpdateModelMixin、DestoryModelMixin