美文网首页
DRF两个基类视图

DRF两个基类视图

作者: ___Mr徐 | 来源:发表于2018-11-27 15:21 被阅读0次


    (1)APIView            (2)GenericAPIView


    1)APIView 

        rest_framework.views.APIView

        APIView是REST framework提供的所有视图的基类,继承自Django的View父类。

    支持定义的属性:(这些属性都是针对大方向的, 没有针对当前视图)

        authentication_classes 列表或元祖,身份认证类

        permissoin_classes 列表或元祖,权限检查类

        throttle_classes 列表或元祖,流量控制类

    在APIView中仍以常规的类视图定义方法来实现get() 、post() 或者其他请求方式的方法。

    举例:


    2)GenericAPIView

        rest_framework.generics.GenericAPIView

        继承自APIVIew,增加了对于列表视图和详情视图可能用到的通用支持方法。通常使用时,可搭配一个或多个Mixin扩展类。

    支持定义的属性:(这些多出来的属性有针对当前视图的)

        列表视图与详情视图通用:

            queryset 列表视图的查询集

            serializer_class 视图使用的序列化器

        列表视图使用:

            pagination_class 分页控制类

            filter_backends 过滤控制后端

        详情页视图使用:

            lookup_field 查询单一数据库对象时使用的条件字段,默认为'pk'

            lookup_url_kwarg 查询单一数据时URL中的参数关键字名称,默认与look_field相同

    提供的方法:

        列表视图与详情视图通用:

            get_queryset(self)

            返回视图使用的查询集,是列表视图与详情视图获取数据的基础,默认返回queryset属性

            get_serializer_class(self)

            返回序列化器类,默认返回serializer_class

            get_serializer(self, args, *kwargs)

            返回序列化器对象,被其他视图或扩展类使用,如果我们在视图中想要获取序列化器对象,可以直接调用此方法。

    注意,在提供序列化器对象的时候,REST framework会向对象的context属性补充三个数据:request、format、view,这三个数据对象可以在定义序列化器时使用。

    举例:


    总结: 

        如果只是简单的查询数据库里面的所有数据, 直接用APIView就可以了,  当然也可以用GenericAPIView

        如果要查询的数据是根据路径查询则可以用GenericAPIView

    相关文章

      网友评论

          本文标题:DRF两个基类视图

          本文链接:https://www.haomeiwen.com/subject/aevgqqtx.html