REST 框架包含了处理ViewSet
的抽象,这样开发者就可以专注于API的状态和交互,而不用去管URL的构造,URL会按照
公共约定自动构造。
ViewSet
类和View
类差不多,不同的是ViewSet
提供如read
,update
等方法,而不是get
或是put
。
一个ViewSet
类只绑定一组方法处理程序,当它被实例化为一组views
时,通常用一个Router
类来处理复杂的url。
重构代码以使用ViewSets
首先将我们现有的UserList
和UserDetail
重构合并为UserViewSet
。
编辑views.py
from rest_framework import viewsets
class UserViewSet(viewsets.ReadOnlyModelViewSet):
"""
这个ViewSet提供`list`和`detail`两个功能
"""
queryset = User.objects.all()
serializer_class = UserSerializer
这里我们使用的ReadOnlyModelViewSet
类会提供默认的只读操作。
像以前一样,我们依然定义queryset
和serializer_class
属性,只不过之前需要在两个类里面定义,现在只需要定义一遍。
接下来我们将现有的SnippetList
, SnippetDetail
, SnippetHighlight
重构合并为SnippetViewSet
。
编辑views.py
… 阅读全文 “Django REST framework 学习纪要 Tutorial 6 ViewSets & Routers”