回应

不同于基本的HttpResponse对象,TemplateResponse对象保留先前由视图提供给计算响应上下文的细节。该响应的最终输出,不计算直到需要它,以后在响应过程。

- Django文档

REST框架支持HTTP提供了一个内容协商Response类,它允许你返回一个可呈现为多种内容类型,根据不同的客户端请求的内容。

Response类的子类Django的SimpleTemplateResponseResponse对象初始化的数据,这应该包括原生的Python原语。REST框架将使用标准的HTTP内容协商,以决定应如何使最终响应的内容。

有没有要求你使用Response类,您还可以返回定期HttpResponse或者StreamingHttpResponse如果需要的对象从您的观点。使用Response类简单地提供内容返回协商的Web API响应,可以呈现多种格式有着更好的接口。

除非你想大量定制REST框架出于某种原因,你应该总是使用APIView类或@api_view用于观点,即返回功能Response对象。这样做可以确保视图可以进行内容协商,并选择适当的渲染器的响应,它从视图返回之前。


创建响应

响应()

签名: Response(data, status=None, template_name=None, headers=None, content_type=None)

不同于常规的HttpResponse对象,你不要实例Response与呈现的内容对象。相反,你在未渲染的数据,这可以由任何Python的原语的通过。

由所使用的渲染器Response类本身不能处理复杂的数据类型,如Django的模型实例,所以你需要在创建之前,序列化数据到基本数据类型Response的对象。

您可以使用REST框架的Serializer类来执行这个数据序列化,或者使用自己的自定义序列化。

参数:

  • data:对该响应的序列化的数据。
  • status:用于响应状态代码。默认为200.另请参见状态码
  • template_name:如果要使用模板名称HTMLRenderer被选中。
  • headers:HTTP标头的字典来在响应中使用。
  • content_type:内容类型的响应。通常情况下,这将自动渲染器,通过内容协商确定设置,但如果您需要明确指定内容类型可能会有一些情况。

属性

。数据

响应的非再生,序列化的数据。

.status_code

HTTP响应的数字状态代码。

。内容

响应的呈现的内容。在.render()必须之前已经调用的方法.content可以被访问。

.template_name

template_name,如果提供。仅在必要时HTMLRenderer或其他自定义模板渲染器的响应公认的渲染器。

.accepted_renderer

将被用来渲染响应的渲染器实例。

通过自动设置APIView@api_view立即响应从视图返回之前。

.accepted_media_type

这是由内容协商阶段选择的介质类型。

通过自动设置APIView@api_view立即响应从视图返回之前。

.renderer_context

额外的上下文信息的字典,这些将被传递到渲染器的.render()方法。

通过自动设置APIView@api_view立即响应从视图返回之前。


标准的HttpResponse属性

Response类扩展SimpleTemplateResponse,和所有常见的属性和方法也可在回应。例如,您可以在标准的方式响应设置头:

response = Response()
response['Cache-Control'] = 'no-cache'

.render()

签名: .render()

与任何其他TemplateResponse被调用此方法以使反应成最终的应答内容的序列化的数据。当.render()被调用时,响应内容将被设置为调用的结果.render(data, accepted_media_type, renderer_context)对方法accepted_renderer实例。

你通常不会需要调用.render()自己,因为它是由Django的标准响应周期来处理。

rest framework Response的更多相关文章

  1. .NET CORE 2.0之 httpcontext

    HttpContext  在之前的.NET framework 是一个非常常用且强大的类,在.NET CORE2.0中要像以前用是不太方便的了, 要是用sesson 首先需要在startup 的Con ...

  2. [2017 ACL] 对话系统

    Long Papers [Domain adaptation ] 1. Adversarial Adaptation of Synthetic or Stale Data ( Cited by 14 ...

  3. windows类书的学习心得

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  4. Django Rest framework基础使用之Request/Response

    1.Request restframework提供了一个Request对象(rest_framework.request.Request) Request对象继承了Django默认的HttpReque ...

  5. Django REST framework 第二章 Request and Response

    此章节开始真正的撰写REST framework的核心代码,介绍一系列必要的建立设计 Request Objects REST framework介绍了一个Request对象用来扩展常规的HttpRe ...

  6. Django restful Framework 之Requests and Response 方法

    前言: 本章主要介绍REST framework 内置的必要的功能. Request objects Response objects Status codes Wrapping API views ...

  7. DRF (Django REST framework) 中的Request 与 Response

    DRF中的Request 与 Response 1. Request - REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST f ...

  8. Entity Framework 6 Recipes 2nd Edition(9-1)译->用Web Api更新单独分离的实体

    第九章 在N层结构的应用程序中使用EF 不是所有的应用都能完全地写入到一个单个的过程中(就是驻留在一个单一的物理层中),实际上,在当今不断发展的网络世界,大量的应用程序的结构包含经典的表现层,应用程, ...

  9. Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化

    9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Fri ...

随机推荐

  1. read()、readline()、readlines() -- Python

    文本文件:readfile.txt 详细描述: read()                  #一次性读取文本中全部的内容,以字符串的形式返回结果 readline()           #只读取 ...

  2. 对于kmp求next数组的理解

    首先附上代码 1 void GetNext(char* p,int next[]) 2 { 3 int pLen = strlen(p); 4 next[0] = -1; 5 int k = -1; ...

  3. Spring(二) Mini版Spring的实现

    实现思路 先来介绍一下 Mini 版本的 Spring 基本实现思路,如下图所示: 自定义配置 配置 application.properties 文件 为了解析方便,我们用 application. ...

  4. 前端 Web 异常监控系统 All In One

    前端 Web 异常监控系统 All In One Sentry https://sentry.io trackjs https://trackjs.com/ rollbar https://rollb ...

  5. RESTful 架构 && RESTful API

    RESTful 架构 && RESTful API REpresentational State Transfer (REST) 具象状态传输https://en.wikipedia. ...

  6. 微信小程序 UI 组件库

    微信小程序 UI 组件库 Vant Weapp 需要注意的是 package.json 和 node_modules 必须在 miniprogram 目录下 $ yarn add @vant/weap ...

  7. autocode & API

    autocode & API https://autocode.com/app/ https://autocode.com/lib/ api-service https://dashboard ...

  8. 使用 js 实现一个中文自动转换成拼音的工具库

    使用 js 实现一个中文自动转换成拼音的工具库 中文 => zhong-wen 应用场景 SEO 友好, URL 自动转换 blogs 发布文章,自动化部署,自动生成 url 的 path (时 ...

  9. js uppercase the first letter of string

    js uppercase the first letter of string js String.toUpperCase `-webkit-border-image`.split(`-`).filt ...

  10. Learning web development with MDN

    Learning web development with MDN Server-side website programming Dynamic Websites – Server-side pro ...