django rest framework业内简称drf,是django在开发前后端分离项目时常用的一个框架。drf中的几类视图是在django的View类基础上扩展出来的。常用的主要有以下几类视图:
1.APIView
传入到该视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象。APIView中提供了解析器、身份认证、权限检查、流量控制等功能,平时开发,大部分都会使用这个视图。
2.GenericAPIView
继承自APIView,主要增加了操作序列化器和数据库查询的方法。
常用方法有:
get_queryset : 获取视图对应的查询集,是列表视图和详细视图获取数据的基础;默认返回的是queryset 的属性;
get_serializer_class : 获取序列化器类,默认返回的是serializer_class;
get_serializer(self, args, *kwargs):获取序列化器对象,这一步相对于APIView来说,就免去了创建序列化对象;
get_object(self) : 返回详情视图所需的模型类数据对象,默认使用lookup_field参数来过滤queryset。
例子:
上面代码中,在配置好queryset和serializer_class后,直接使用self.get_object(),self.get_serializer()获取对象和序列化,不用谢繁琐的查询语句,非常方便。
3. ViewSetMixin
这类视图主要实现配置路由时,将get、post等方法名与我们在视图中自定义的方法对应,可以在一个视图中实现多个方法。下面看一个例子:
1)配置多个get方法:
2)配置get,post等方法:
3)下面看一个ViewSetMixin和GenericAPIView一起使用的例子,这两个视图一起使用代码更加简洁:
4.ViewSet
这个视图是继承自APIView和ViewSetMixin。上面3的第一个例子中,视图继承了ViewSetMixin和APIView,也可以仅仅继承这个视图类,代码如下:
5.GenericViewSet
继承自GenericAPIView和ViewSetMixin。上面3的第三个例子中,视图继承了GenericAPIView和ViewSetMixin,也可以直接继承这个视图,例子如下:
以上就是几个常用的视图,可能有些小伙伴已经有点晕了。总结一下,继承自ViewSetMixin的视图可以丰富路由http请求方法与试图中方法的对应关系,继承自GenericAPIView的视图可以简化queryset、serializer_class等代码的编写,可以根据项目需求需要,选择合适的视图类。
今天就介绍到这里,欢迎对django开发感兴趣的小伙伴私信交流。
閱讀更多 贊哥哥 的文章