当前位置: 首页 > news >正文

# **DRF Response 对象**

DRF Response 对象

1. 概念

  • Response 是 DRF 对 Django 原生 HttpResponse 的封装。
  • 作用:
    • 统一返回 REST API 的响应数据。
    • 支持内容协商(Content Negotiation),根据客户端 Accept 头自动选择返回格式(JSON、XML、HTML 等)。
    • 支持状态码、头信息和数据结构统一管理。
  • 典型场景:在 API 视图中直接返回 Response(data, status, headers)

2. Response 与 HttpResponse 的关系

  • 本质上,DRF 的 ResponseHttpResponse 的子类或包装器。
  • 增强功能:
    1. 自动渲染:将 Python 对象(字典、列表)渲染为客户端可接受的格式。
    2. 简化返回:直接返回数据,而无需手动转换成 JSON 或设置内容类型。
    3. 状态码支持:直接指定 HTTP 状态码,如 200、201、400 等。
    4. 可扩展性:配合 Renderer、Middleware、Header 处理更灵活。

3. 主要属性

  1. .data
    • 响应数据,可以是字典、列表或任何可序列化对象。
    • 在渲染前存储 Python 原生对象。
  2. .status_code
    • HTTP 状态码,如 200、201、404、500 等。
    • 默认 200 OK。
  3. .headers
    • 响应头信息,可自定义添加,如 Content-TypeLocation 等。
  4. .accepted_renderer
    • DRF 内部使用,表示根据客户端请求选择的渲染器。
  5. .accepted_media_type
    • 客户端请求的媒体类型(如 application/json)。
  6. .renderer_context
    • 渲染器上下文,包括请求对象、视图对象、格式等信息,用于渲染数据。

4. 核心功能

  • 自动渲染数据
    • 根据客户端请求头自动选择 Renderer(JSONRenderer、BrowsableAPIRenderer 等)
    • 渲染 .data 为最终返回内容
  • 设置状态码
    • 可以直接指定 HTTP 响应状态码,不必手动生成 HttpResponse
  • 设置响应头
    • 可自定义 HTTP headers,如 LocationCache-Control
  • 与中间件/认证集成
    • 可通过 Response 对象携带自定义数据或认证信息,方便统一处理

5. 使用场景

  • API 视图返回数据
    • 返回序列化后的数据字典或列表
  • 设置状态码
    • 如创建资源返回 201 Created、错误返回 400 Bad Request
  • 返回错误信息
    • 将错误信息以统一结构返回给客户端
  • 自定义 HTTP 头
    • 用于重定向、缓存控制或认证信息

总结:

  • DRF 的 ResponseHttpResponse 的增强封装,核心作用是 统一、可扩展、自动渲染 API 响应
  • 核心属性:.data.status_code.headers.accepted_renderer.renderer_context
  • 核心优势:简化 API 返回操作、支持内容协商、便于状态码和头信息管理。
http://www.dtcms.com/a/460791.html

相关文章:

  • 临夏建设网站易烊千玺网页设计模板代码
  • 自己开发网站要多少钱如何快速找到做网站的客户
  • zookeeper:一致性原理和算法
  • 如何设置时钟服务器时间
  • Shell 编程
  • 来料不良---供应商还是企业的问题?
  • 六轴工业机器人可视化模拟平台 (Vue + Three.js + Blender)
  • Java数据结构:单链表
  • 硬件基础深度解析(一):电阻——电路世界中无处不在的基石**
  • 记力扣2106.摘水果 练习理解
  • Java中的泛型 Generics
  • [linux仓库]信号产生[进程信号·贰]
  • 网站内部链接优化网红营销李佳琦案例分析
  • 有哪些网站设计比较好的公司wordpress右上角登录
  • 在Python中加载.pkl文件
  • HarmonyOS大厂面试总结大全二
  • python 字符串压缩(字符串-中等)含源码(九)
  • 如何自己设计一个网页宁波seo推广哪家好
  • 【STM32项目开源】STM32单片机智能温室大棚控制系统
  • 车牌 OCR 识别:国庆高速免费通行的 “隐形引擎”
  • wpf之TabControl
  • WPF应用最小化到系统托盘
  • 使用平行型子环腔的 23 KHz 线宽 1064 nm SOA 光纤激光器
  • 保定企业建站程序wordpress数据都被存在哪
  • 深圳做网站做app少儿戏曲知识 网站建设
  • SymPy 符号计算:从基础到高级的完整指南
  • 成免费crm推广网站黄石网站建设黄石
  • HTB Monitored writeup(nagios api v1 login)
  • 开源 C++ QT QML 开发(十三)多线程
  • 企业如何建设网站,企业搭建网站的流程