首页
学习
活动
专区
圈层
工具
发布

drf之请求、响应、视图

drf提供了Parser解析器,在接收到请求之后会根据Content-Type指明的请求数据类型(json、表单等)将请求数据进行解析,解析为类字典 对象保存到Request 对象之中...类似于Django中标准的request.POST和 request.FILES属性,但提供如下特性: 1 包含了解析之后的文件和非文件数据 2 包含了对POST、PUT、PATCH请求方式解析后的数据...1.2.2 常用属性 .data 传给Response对象的,序列化后但尚未render处理的数据 .status_code 状态码的数字 .content 经过render处理后的响应数据...的提供的视图的主要作用有: 控制序列化器的执行(检验、保存、转换数据) 控制数据库查询的执行 它还提供了许多的视图基类和拓展类,用于简化视图的编写。...如果序列化器对前端发送的数据验证失败,返回400错误。

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

    DRF 过滤排序分页异常处理

    CursorPagination,游标分页 分页总结 异常 自定义异常 REST framework定义的异常 DRF 过滤排序分页异常处理 过滤 涉及到查询数据的接口才需要过滤功能 DRF过滤使用种类...方法,返回queryset对象,qs对象是过滤后的 视图类中使用,且不需要重写类属性去指定过滤的字段 过滤使用,支持模糊查询(自己定制过滤方式),通过filter方法来指定过滤规则 自定义过滤类 '''...ordering=price,-id # 价格升序id降序 ···· 注意 过滤可以和排序同时使用,但是先执行过滤再执行排序,提升了代码的效率(先过滤后排序),因为如果先排序,那么数据库的数量庞大的话...,而最后一个分页类只能上一页或下一页 前两种在获取某一页的时候,都需要从开始过滤到要取的页面数的数据,本质是SQL中的limit··,查询出要跳过的页数显示要查的数据,相比第三种慢一点 第三种方式,本质是先排序...,内部维护了一个游标,游标只能选择往前或者往后,在获取到一页的数据时,不需要过滤之前的数据,相比前两种速度较快,适合大数据量的分页 异常 REST framework提供了异常处理,我们可以自定义异常处理函数

    1.4K40

    DRF框架学习(四)

    DRF框架学习(四) 1.视图集对象的action属性 作用: 获取现在要执行的是哪一种操作。 self.action:是字符串类型,目的是获取所有执行的操作。...lookup_value_regex = '\d+' 2.1视图集额外处理方法url配置项的生成 需要给对应的方法添加action装饰器。...认证需要配合权限来使用 4.1使用 DRF框架的默认全局认证方案如下,可对其进行修改,比如注释掉基本认证: REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES...在执行视图的dispatch()方法前,会先进行视图访问权限的判断 在通过get_object()获取具体对象时,会进行对象访问权限的判断 DRF框架提供了四个权限控制类: AllowAny允许所有用户...""" # 需求: 对id为1,3的数据对象有访问权限,其他的对象没有访问权限 if obj.id in (1, 3): return True

    3.7K40

    Django+Vue开发生鲜电商平台之5.使用DRF实现商品列表页和过滤

    但是从代码中可以看到: 通过在新建列表、其元素为单个商品信息组成的字典,一个一个地添加,显得很麻烦,可进行改进; 有些字段不能直接用json.dumps()方法序列化,如datetime,会报错,如商品列表视图修改为如下时...虽然Django已经可以实现Json数据传递,但是我们还是采用Restful framework,因为其对Django自带功能实现了进一步优化,更方便使用。...方法的内容POST,这意味着您可以访问PUT和PATCH请求的内容; 它支持REST框架的灵活请求解析,而不仅仅是支持表单数据。...例如,可以以处理传入表单数据的相同方式处理传入JSON数据。...显然,在传入price_min参数后,显示到前端的数据量也会发生变化。

    6.1K20

    django rest_framework 分页

    简介 本文主要介绍在drf框架中如何对查询的数据进行分页,在drf框架中有提供该基础功能的使用案例和文档,详情参考drf-pagination-官网文档 (opens new window) 内置分页方式...page,当前页数 page_size,每页展示的数量 LimitOffsetPagination,提供limit​和offset​进行分页 limit,当前分页展示的数量 offset,当前数据是从第几行开始...CursorPagination,对结果集中提供前进与后退的链接来进行操作,不允许随意跳动到任意位置。...": 上一页的链接, "results": 分页后的数据 } 但实我们在业务中可能并不需要next​和previous​,只需要保留count​和results​两个字段,这个时候我们可以通过重写...get_paginated_response​方法需要对响应的数据进行裁剪。

    85810

    第 11 篇:基于 drf-haystack 的文章搜索接口

    text=key-word 将 key-word 替换为需要搜索的关键字,例如将其替换为 markdown,测试集数据中得到的搜索结果如下: 搜索结果符合预期,但略微有一点不太好的地方,就是没有高亮的标题和摘要...,优化了文章标题被从关键字位置截断的问题,因此我们使用改造后的辅助类来对需要高亮的结果进行处理。...回顾一下序列化器的序列化字段,其实也是接收某个字段的值作为输入,对其进行处理,将其转化为可序列化的结果后输出,和我们需要的逻辑很像。...自定义序列化字段其实非常的简单,基本流程分两步走: 从 drf 官方提供的序列化字段中找一个数据类型最为接近的作为父类。 重写 to_representation 方法,加入自己的序列化逻辑。...对象,这个对象就是视图中的 HTTP 请求对象,但是因为 django 中 request 对象无法像 flask 那样从全局获取,因此 drf 在视图中将其保存在了序列化器和序列化字段的 context

    2.2K20

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

    它是 DRF 中通用视图和视图集的基础,提供了查询、序列化、分页等常用操作的标准实现。本质上它是 DRF 中所有通用视图(如 ListAPIView、RetrieveAPIView 等)的基础。二....对象查找(lookup_field 和 lookup_url_kwarg)这两个属性控制如何从 URL 中获取单个对象。lookup_field:模型中用于查找对象的字段名,默认为 'pk'。...分页(pagination_class)控制如何对查询结果进行分页。...published_year=2022 - 过滤 2022 年出版的图书优点灵活性 - 无需为每个过滤条件编写专门的代码可扩展性 - 添加新的模型字段后,自动支持对该字段的过滤简洁性 - 代码简洁明了,...同时,GenericAPIView 也是 DRF 中更高级视图(如 ListAPIView、RetrieveAPIView 等)的基础。

    96610

    drf的接口文档生成与管理

    上面列出的工具或多或少都需要花费一定时间去手动维护,在drf后端项目中可以利用其自带的Core API、第三方库Swagger以及更好的drf-yasg自动生成接口文档 2、Core API生成接口文档...HostListView(generics.ListAPIView): """ 返回所有主机信息. """ 包含多个方法的视图,在类视图的文档字符串中,分开方法定义 class...latest: 返回最新的主机数据 read: 修改主机的访问记录 """ 2.4 访问查看 按照上述规范优化好后端接口的视图后,重启项目,访问接口文档 ?...patterns: 自定义的urlpatterns, 该参数直接透传至SchemaGenerator urlconf: 描述从哪个文件获取路由配置, 缺省值是urls, 该参数直接透传至SchemaGenerator...调用该类的with_ui或 without_ui方法可生成对应的视图函数, 将其添加进urlpatterns即可访问到自动生成的 API 文档 SchemaView.with_ui(renderer,

    5.6K10

    不会DRF?源码都分析透了确定不来看?

    python中的字典,列表,对象等转json,xml,prop···· 反序列化:把别人提供的数据转换成我们所需的格式 最常见的比如我们使用json模块来对数据进行处理···· 在Djangorestframework...获取一条 新增一条数据 全部修改:修改id为1的数据,这里尽量在body体里写全参数 局部修改:修改id为1的数据,修改啥写啥 删除一条数据:删除id为2的数据...CBV源码流程分析 因为DRF框架里大部分都是基于CBV(视图类)写,所以流程是什么,如何执行需要了解,同时也方便理解APIView,顺便提一嘴APIView也是继承了View ---->...,从当前对象(视图类的对象)拿到请求方法,如果是get请求就拿到get方法,post请求就拿到post方法,然后赋给handler,handler就是相应请求对应的方法,最后返回handler(request...import QueryDict 注意:如果前端提交过来多个同名数据也就是form表单中input标签的name属性设置了多个重名数据就不能使用request.POST.get('user')来获取了

    1.7K10

    Django Rest Framework中嵌套关系的JSON序列化

    在 Django Rest Framework (DRF) 中,处理嵌套关系的 JSON 序列化是一个常见需求。以下是如何实现嵌套关系序列化的详细说明,包括序列化器定义、模型关系以及常见用法。...0, "jobdtl_allowadhoc": "Y", "jobdtl_waitop": "N" }}2、解决方案2.1 编写序列化器首先,我们需要为这两个模型编写序列化器,以便将模型数据转换为...例如,访问URL http://localhost/TidalDEV/,会返回所有Jobmst和Jobdtl模型数据的JSON序列化结果。...访问URL http://localhost/TidalDEV/50244/,会返回Jobmst和Jobdtl模型数据的JSON序列化结果,其中Jobmst的jobmst_id为50244。...总结通过以上步骤,我们实现了在Django Rest Framework中对嵌套关系的JSON序列化。这为我们提供了更加灵活的方式来处理复杂的数据结构,并将其转换为JSON格式。

    1.8K10

    浅谈yarn的任务管理与资源管理

    第13步:MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。 第14步:ReduceTask向MapTask获取相应分区的数据。...调度器会根据调度算法和优先级等因素,从队列中选择合适的应用程序并为其分配资源。调度器会考虑集群中的负载情况,保证资源的合理利用和公平共享。...LOCALIZED:Container已经获取了运行时环境和所需的资源,表示资源已经被分配给某个容器,但资源还未完全在该容器上本地化。...在容器执行应用程序之前,需要将应用程序所需的资源(如JAR包、配置文件等)拷贝到容器所在的节点上,并在容器内部完成相关配置。完成本地化操作后,容器就可以开始执行应用程序。...可以使用HTTP客户端(如curl、Postman)向适当的API端点发送请求,并解析响应以获取任务的监控数据。

    1.7K10

    DRF框架学习(三)

    DRF框架学习(三) 1.视图 1.1作用 1.控制序列化器的执行(数据检验、数据保存、转换数据(序列化操作)) 2.控制数据库的查询操作。...2.响应时可以统一返回Response类的对象 3.异常处理:如果视图中抛出了未处理异常,DRF框架会自动对异常进行处理,并且会把处理之后的错误信息返回给客户端。...Response类的对象: 1.传入原始相应数据(比如一个字典),Response会自动根据客户端请求头中 Accept将相应数据转换为对应的格式进行返回。默认是json格式。...lookup_url_kwarg指定从查询集获取对象时,从url地址中提取的参数的名称。 注意:经常配合Minxin扩展类来使用。...如果序列化器对前端发送的数据验证失败,返回400错误。

    1.5K20
    领券