Django 项目的 ORM(Object Relational Mapping, 对象关系映射) 能够给咱们省略构造 SQL 查询语句的麻烦, 可是对于试图, 咱们已经构建了 Model 的状况下依旧须要创造一些逻辑代码, 那已知这些封装, 咱们能够再对代码简化。python
在标准的接口中, 提供了标准的建立/检索/更新/删除实例对象的路由, 如:app
class UserViewSet(viewsets.ViewSet):
""" Example empty viewset demonstrating the standard actions that will be handled by a router class. If you're using format suffixes, make sure to also include the `format=None` keyword argument for each action. """
def list(self, request):
pass
def create(self, request):
pass
def retrieve(self, request, pk=None):
pass
def update(self, request, pk=None):
pass
def partial_update(self, request, pk=None):
# 不经常使用
pass
def destroy(self, request, pk=None):
pass
复制代码
在分发期间你能够使用如下属性:post
basename
:用于建立 URL 的基础名称action
:当前操做的动做名称字符串(如 list
)detail
:是否返回列表/详情信息的布尔值suffix
:视图集类型的显示后缀name
:视图集的显示名称, 会与 suffix
参数互斥description
:单个试图的显示描述ViewSet
集成自 APIView
, 你能够使用任何标准属性获取数值帮助 API 构建, 如 permission_classes
, authentication_classes
来帮助试图控制访问策略。spa
GenericViewSet
是继承自 GenericAPIView
, 并提供了 get_object
和 get_queryset
的方法以及其余视图行为的方法。code
ModelViewSet
是继承自 GenericAPIView
, 并支持 .list()
, .retrieve()
, .create()
, .update()
, .partial_update()
和 .destroy()
方法的视图类, 一般你须要指定 queryset
和 serializer_class
两个属性。orm
ReadOnlyModelViewSet
时继承自GenericAPIView
, 并支持 .list()
, .retrieve()
的只读视图类, 一般你须要指定 queryset
和 serializer_class
两个属性。router