django开发-使用drf开发前后端分离项目时你可以使用这些视图

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。

例子:

django开发-使用drf开发前后端分离项目时你可以使用这些视图

GenericAPIView的使用

上面代码中,在配置好queryset和serializer_class后,直接使用self.get_object(),self.get_serializer()获取对象和序列化,不用谢繁琐的查询语句,非常方便。

3. ViewSetMixin

这类视图主要实现配置路由时,将get、post等方法名与我们在视图中自定义的方法对应,可以在一个视图中实现多个方法。下面看一个例子:

1)配置多个get方法:

django开发-使用drf开发前后端分离项目时你可以使用这些视图

ViewSetMixin加上APIView的使用1

2)配置get,post等方法:

django开发-使用drf开发前后端分离项目时你可以使用这些视图

ViewSetMixin加上APIView的使用2

3)下面看一个ViewSetMixin和GenericAPIView一起使用的例子,这两个视图一起使用代码更加简洁:

django开发-使用drf开发前后端分离项目时你可以使用这些视图

ViewSetMixin加上GenericAPIView的使用

4.ViewSet

这个视图是继承自APIView和ViewSetMixin。上面3的第一个例子中,视图继承了ViewSetMixin和APIView,也可以仅仅继承这个视图类,代码如下:

django开发-使用drf开发前后端分离项目时你可以使用这些视图

VIewSet的使用

5.GenericViewSet

继承自GenericAPIView和ViewSetMixin。上面3的第三个例子中,视图继承了GenericAPIView和ViewSetMixin,也可以直接继承这个视图,例子如下:

django开发-使用drf开发前后端分离项目时你可以使用这些视图

GenericViewSet的使用

以上就是几个常用的视图,可能有些小伙伴已经有点晕了。总结一下,继承自ViewSetMixin的视图可以丰富路由http请求方法与试图中方法的对应关系,继承自GenericAPIView的视图可以简化queryset、serializer_class等代码的编写,可以根据项目需求需要,选择合适的视图类。

今天就介绍到这里,欢迎对django开发感兴趣的小伙伴私信交流。


分享到:


相關文章: