首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DRF二级视图GenericAPIView

GenericAPIView GenericAPIView继承自APIView,增加了对于列表视图和详情视图可能用到的通用支持方法。通常使用时,可搭配一个或多个Mixin扩展类。...如果您要覆盖视图方法,请务必调用get_queryset()而不是直接访问此属性。 serializer_class 应该用于验证和反序列化输入以及序列化输出的序列化器类。...(self): return BookInfo.objects.all() get_serializer_class(self) 返回序列化器类,默认返回serializer_class,可以重写...详情视图使用 get_object(self) 返回详情视图所需的模型类数据对象,默认使用lookup_field参数来过滤queryset。 在视图中可以调用该方法获取详情信息的模型类对象。...如果不清楚DRF分页器的,可以看这里 列表和新增视图 列表视图中,每次按照分页大小返回多个数据。如下图所示,我们使用百度搜索的时候,百度会以分页的形式给我们展示数据。

70610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    drf之请求、响应、视图

    在APIView中仍以常规的类视图定义方法来实现get() 、post() 或者其他请求方式的方法。例如使用APIView简单的实现五个增删查改的API接口。...提供的关于序列化器使用的属性与方法 属性:serializer_class  指明视图使用的序列化器 方法: get_serializer_class(self) : 当出现一个视图类中调用多个序列化器时...,那么可以通过条件判断在get_serializer_class方法中通过返回不同的序列化器类名就可以让视图方法执行不同的序列化器对象了。...返回序列化器类,默认返回serializer_class,可以重写。...在试图中可以调用该方法获取详情信息的模型类对象。**若详情访问的模型类对象不存在,会返回404。

    2.2K20

    DRF 视图组件

    目录 DRF 视图组件 视图组件大纲 两个视图基本类 五个扩展类 九个子类视图 视图集 常用视图集父类 魔法类 一览表 DRF中视图的“七十二变” 第一层:基于APIview的五个接口 第一层五个接口demo...第二层:基于GenericAPIView的五个接口 常用类属性: 第二层五个接口demo 第三层:基于GenericAPIView+五个视图扩展类写 第三层五个接口demo GenericAPIView...魔法类 ViewSetMixin:控制自动生成路由 一览表 DRF中视图的“七十二变” 第一层是继承APIView写,第二层基于基于GenericAPIView写,第三层基于GenericAPIView...() # 通过lookup_field查询的 -get_serializer() # 使用它序列化 -get_serializer_class() # 返回序列化类 ,后期可能重写...return Author.objects.all() ··· # 这样序列化的数据就不一样了,根据不同的条件序列化不同的数据 '''当然还可以通过重写get_serializer_class

    94010

    【愚公系列】2022年04月 Python教学课程 70-DRF框架之视图集

    GenericViewSet 二、扩展视图集 1.ModelViewSet 2.ReadOnlyModelViewSet 三、用法补充 1.扩展方法使用 前言 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中...扩展类提供的方法同名,所以我们可以通过继承Mixin扩展类来复用这些方法而无需自己编写。...param request: :return: """ # 1、查询图书表获取所有图书对象 self.get_queryset() 获取queryset属性中的所有数据...获取serializer_class所指定的序列化器进行初始化操作 ser = self.get_serializer(books, many=True) # 使用序列化器对象的...,我们还可以通过重写get_serializer或者get_queryset对 同一个类中的指定视图采用不同的queryset或者不同的序列化器 """ def get_queryset

    1.6K30

    RESTful源码笔记之RESTful Framework的APIview, Viewset总结分析

    首先,我们看一下主要的几种view以及他们之间的关系。 ? 这其中,还涉及了mixins,主要也分为5类: ?...APIView对django本身的View进行封装,从上述的代码,这样分析,两者的差别看起来不是很大,但实际中APIView做了很多东西,它定义了很多属性与方法,举几个例子 # 这三个是常用的属性...GenericAPIView对APIView再次封装,实现了强大功能: 加入queryset属性,可以直接设置这个属性,不必再将实例化的courses,再次传给seriliazer,系统会自动检测到。...加入serializer_class属性与实现get_serializer_class()方法。...): # 重写get_serializer_class方法 if self.action == 'list': return CourseSerializer

    1K10

    django rest framework通用view

    首先,我们看一下主要的几种view以及他们之间的关系。 ? 这其中,还涉及了mixins,主要也分为5类: ? 下面我们以课程(course)作为一个例子,对view进行一个总结。...APIView对django本身的View进行封装,从上述的代码,这样分析,两者的差别看起来不是很大,但实际中APIView做了很多东西,它定义了很多属性与方法,举几个例子 # 这三个是常用的属性...GenericAPIView对APIView再次封装,实现了强大功能: 加入queryset属性,可以直接设置这个属性,不必再将实例化的courses,再次传给seriliazer,系统会自动检测到。...加入serializer_class属性与实现get_serializer_class()方法。...# 重写get_serializer_class方法 if self.action == 'list': return CourseSerializer

    1K20

    第 7 篇:文章详情的 API 接口

    实际上,实现各个 action 逻辑的混入类都非常简单,以 RetrieveModelMixin 为例,我们来看看它的源码: class RetrieveModelMixin: """...lookup_field 属性指定的资源筛选字段(默认为 pk)。django-rest-framework 以该字段的值从 get_queryset 返回的资源列表中筛选出单个资源对象。...类似于视图集类的 queryset 属性和 get_queryset 方法的关系, serializer_class 属性的值也可以通过 get_serializer_class 方法返回的值覆盖,因此我们可以根据不同的...那么如何在视图集中区分不同的 action 动作呢?视图集有一个 action 属性,专门用来记录当前请求对应的动作。...destory 因此,我们在视图集中重写 get_serializer_class 方法,写入我们自己的逻辑,就可以根据不同请求,分别获取相应的序列化器了: class PostViewSet(

    1K30

    Django Rest Framework

    1) API策略属性 以下的API策略属性应用于APIView,控制视图的策略: renderer_classes: 渲染器类 parser_classes: 解释器类 authentication_classes...通用视图可以设置一些类属性在通用视图内,也可以根据特殊要写重写它的内部视图方法 使用.as_views()来转换成视图函数 url(r’^/users/’, ListCreateAPIView.as_view...通常情况下,你必须设置这个属性,或重写get_serializer_class()方法。...,ViewSet类是一个简单类型的基于类的观点,没有提供任何方法处理程序如.get()或. post(), 而代替提供方法比如.list()和create()。...ViewSet同样不提供具体行为方法的实现,可以重写和定义一些请求处理方法。 而代替了原来APIVIew的POST,GET等方法,取而代之的是list,create等方法。

    2.3K60

    测试开发进阶(二十七)

    反向指定 父表中默认不会生产关联字段(从表),可以手动指定,字段名默认为子表模型类名「小写_set」 projects.serializer.ProjectModelSerializer中添加 interfaces_set...优化视图-请求 from rest_framework.views import APIView 当视图继承 APIView之后,请求实例方法中的第二个参数 request为 Request对象,是对Django...中的 HttpRequest对象进行的拓展 ?...Request 对Django中的HttpRequest进行拓展 根据请求头中的Content-Type自动进行解析 无论前端发送那种格式数据,都可以以相同的方式读取 request.data 类似于Django...模版名称,使用HTMLRenderer渲染时需要指明 headers 用于存放响应头信息的字典 content_type 响应头中的Content-Type 通常此参数无需设置,会自动根据前端所需类型数据来设置该参数

    60120

    Django REST Framework

    属性 请求数据体,类似于Django的request.POST, request.FILES 在DRF中主要指的是Json query_params 所有传入的关键字 api.tulingxueyuan.com...- 4xx: 请求错误 - 5xx: 服务器错误视图类APIViewrest_framework.views.APIView是django中View的子类跟View有不同的地方传入传出数据用的是...drf的请求和反馈类会引发并处理APIException在dispatch之前,会进行身份验证,权限检查,流量控制支持的属性有authentication_classes: 列表或者元祖,身份验证类...的子类 - 支持的属性 - queryset:查询结果集 - serializer_class: 视图使用的序列化器 - panination_class...- get_serializer_class:得到序列化器类 - get_serializer: 得到序列化器ListModelMixinlist(reqeust, *args, **

    2.2K63

    从入门到精通Django REST Framework-(五)

    GenericAPIView 是 Django REST Framework (DRF) 中的一个基础视图类,它继承自 APIView,并添加了一些常用的功能,特别是与数据库模型交互的功能。...序列化器(serializer_class)与 get_serializer()serializer_class 属性:指定用于序列化和反序列化的类。...class BookView(GenericAPIView): serializer_class = BookSerializerget_serializer_class() 方法:允许根据不同情况返回不同的序列化器类...def get_serializer_class(self): """根据请求方法和用户角色返回不同的序列化器""" # 管理员使用完整序列化器 if self.request.user.is_staff...对象查找(lookup_field 和 lookup_url_kwarg)这两个属性控制如何从 URL 中获取单个对象。lookup_field:模型中用于查找对象的字段名,默认为 'pk'。

    8310

    五、商品列表页

    django rest framework了 5.3.APIview方式实现商品列表页 (1)安装 pip install coreapi                         drf的文档支持...,封装了很多方法,比APIView功能更强大 class GenericAPIView(views.APIView): """ Base class for all other generic...= GoodsSerializer settings.py里面就不用设置了 5.7.viewsets和router完成商品列表页 主要用到viewsets中的GenericViewSet 再看下ViewSerMixin...的APIView、GenericView、viewsets和router的原理分析 genericViewSet 是最高的一层 往下 GenericViewSet(viewsets)     ----drf...还有其它几个mixin(增删改查局部),这些功能都是mixin做的  我们一般都是用viewsets ViewSet类与View类其实几乎是相同的,但提供的是read或update这些操作,而不是get

    4.8K00

    Django rest-framework视图家族

    继承基本View,拥有View所有的功能 重写了as_view()方法,禁用了csrf认证 重写dispatch,封装请求、响应、渲染、异常、解析、三大认证模块 封装一堆属性,可完成视图类的局部配置...方法:配置queryset类属性,群查获取QuerySet对象 提供get_object方法:配置lookup_url_kwarg类属性,单查获取单个对象 提供get_serializer方法:配置serializer_class...类属性,提供序列化类并使用自定义的序列化类序列化 总结:GenericAPIView就是在APIView基础上额外提供了三个方法和三个类属性,如果不配合视图工具类,则体现不出来优势所在 使用它的好处:视图中的增删改查逻辑其实大差不差...# 删除接口一般是自己实现重写到的,因为真正的业务不需要真正的删除 pass # django源代码中是真的删除 return self.destroy..., *args, **kwargs): pass 视图集 viewsets 重写as_view方法,增加action参数(可以完成路由层的请求方法映射关系) 可以在路由层中自定义请求方法的映射关系

    77120
    领券