DRF两个基类视图


(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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Request 与 Response RequestREST framework 传入视图的request对象不再...
    LiWei_9e4b阅读 3,555评论 0 0
  • API Reference GenericAPIView This class extends REST fram...
    阳光小镇少爷阅读 7,430评论 0 1
  • DRF框架包含序列化器,视图以及URL视图,三者密不可分,因此本篇聊的是视图部分。在django中rest_fra...
    咏远瑞智阅读 4,151评论 0 0
  • 基于类的视图的一个主要优点是它们允许你组合可重复使用的行为。 REST框架通过提供大量预构建视图来提供常用模式,从...
    YYL07阅读 3,892评论 0 0
  • 如果选择纯C作为ESP8266的开发,有两个途径: 使用乐鑫官方原生的 RTOS-SDK或者NONOS-SDK 使...
    梁睿坤阅读 12,308评论 7 13