视图集: ViewSet,GenericViewSet,ModelViewSet
视图集增加额外行为,比如增加查询最新的一本图书信息:
class BookViewSet(ModelViewSet) '''视图集''' queryset = BookInfo.objects.all() serializer_class = BookInfoModelSerializer def latest(self,request): '''返回最后一本图书信息''' book = BookInfo.objects.latest('id') serializer = self.get_serializer(book) return Response(serializer.data)
路由页面:
urlpatterns = [ # 如果在增删改查之外额外增加行为,应该单独定义路由 # 如果此行为不需要pk,那么它就是列表视图,但是列表视图默认只有list和create,因此需要暴露你的行为:latest url(r'^books/latest$'),views.BookViewSet.as_view({'get':'latest'}) # 比如我们在增加一个修改阅读量的行为,是需要传入pk值的 url(r'^books/(?P<pk>\d+)/read$'),views.BookViewSet.as_view({'put':'read'}) ]