API Guide(二)之Responses

Responses

与基本的HttpResponse对象不同,TemplateResponse对象保留 the details of the context that was provided by the view to compute the response。The final output of the response is not computed until it is needed, later in the response process.

Django文档

REST框架通过提供一个Response类来支持HTTP content negotiation,该类允许您根据客户端请求返回可以被渲染成多种内容类型的内容。

The Response class subclasses Django‘s SimpleTemplateResponseResponse objects are initialised with data, which should consist of native Python primitives.然后,REST框架使用标准HTTP内容协商来确定如何渲染最终响应内容。

您不需要使用Response该类,如果需要,还可以从视图中返回常规的HttpResponseStreamingHttpResponse对象。使用Response该类只需提供一个更好的界面来返回内容协商的Web API响应,这个界面可以渲染为多种格式。

除非您想要大量自定义REST框架,否则您应该始终为返回Response 对象的视图使用APIView类或@api_view函数。这样做可以确保在从视图返回之前可以执行 content negotiation并为响应选择适当的渲染器。


Creating responses

Response()

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

与常规HttpResponse对象不同,您不会用 rendered content 实例化 Response对象。而是传递 unrendered data,这些数据可能由任何Python primitives 组成。

Response类使用的renderers 不能本地处理诸如Django模型实例等复杂的数据类型,因此您需要在创建Response对象之前将数据序列化为原始数据类型。

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

参数:

  • data:响应的序列化数据。
  • status:响应的状态码。默认为200.另请参见状态码
  • template_nameHTMLRenderer选择使用的模板名称。
  • headers:用于响应的HTTP标头字典。
  • content_type:响应的内容类型。通常,这将由content negotiation确定由renderer 自动设置,但在某些情况下,需要你明确指定内容类型。

Attributes

.data

Request对象的未渲染内容。

.status_code

HTTP响应的数字形式的状态码。

.content

The rendered content of the response。.render()方法必须在.content被访问之前被调用。

.template_name

The template_name, if supplied. Only required if HTMLRenderer or some other custom template renderer is the accepted renderer for the response.

.accepted_renderer

将用于渲染响应的渲染器实例。

从视图返回响应之前,由APIView@api_view自动设置。

.accepted_media_type

由the content negotiation stage 选择的媒体类型。

从视图返回响应之前,由APIView@api_view自动设置。

.renderer_context

将传递给渲染器.render()方法的附加上下文信息的字典。

从视图返回响应之前,由APIView@api_view自动设置。


标准的HttpResponse属性

The Response class extends SimpleTemplateResponse, and all the usual attributes and methods are also available on the response. For example you can set headers on the response in the standard way:

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

.render()

签名: .render()

As with any other TemplateResponse, this method is called to render the serialized data of the response into the final response content. When .render() is called, the response content will be set to the result of calling the .render(data, accepted_media_type, renderer_context) method on the accepted_renderer instance.

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

时间: 2024-08-01 22:36:20

API Guide(二)之Responses的相关文章

【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装的一系列更加便于开发者使用,减少开发者工作量的二级API接口.除了官方通用的鱼骨.鹰眼控件,还有大量官方开发的地图插件,类似谷歌的lib.当然本文还会介绍自定义插件的使用. ------------------------------------------------------------------------------------------------- 第一部分 控件 目前官方支持的控件包含:缩放控制条-地图

使用IOS7原生API进行二维码条形码的扫描

使用IOS7原生API进行二维码条形码的扫描 IOS7之前,开发者进行扫码编程时,一般会借助第三方库.常用的是ZBarSDK,IOS7之后,系统的AVMetadataObject类中,为我们提供了解析二维码的接口.经过测试,使用原生API扫描和处理的效率非常高,远远高于第三方库. 一.使用方法示例 官方提供的接口非常简单,代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

在云平台上基于Go语言+Google图表API提供二维码生成应用

二维码能够说已经深深的融入了我们的生活其中.到处可见它的身影:但通常我们都是去扫二维码, 曾经我们分享给朋友一个网址直接把Url发过去,如今我们能够把自己的信息生成二维码再分享给他人. 这里就分享一下基于Go语言+Google图表API提供二维码生成功能的小应用,并演示怎样把它公布到云平台上, 让每一个人都能够通过网络訪问使用它. Google图表API Google在http://chart.apis.google.com 上提供了一个将表单数据自己主动转换为图表的服务. 只是,该服务非常难交

用产品思维设计API(二)——数据解耦,才是前后分离的本质

用产品思维设计API(二)--数据解耦,才是前后分离的本质 前言 最近公司内部在重构项目代码,包括API方向的重构,期间遇到了很多的问题,不由得让我重新思考了下. - 一个优雅的API该如何设计? - 前后端分离之后,API真的解耦分离了吗? - 不断的版本迭代,API的兼容性该如何做? ps.这里所说的API仅为Web API,提供APP\WEB开发使用. 年前,我司内部的接口已经进入了一个完全的重构阶段,参考了市面上各大平台的API和文档,自己也总结出了很多的心得.这里向大家分享一下,接下来

Elasticsearch Java API (二): index创建删除 cluster管理

Elasticsearch Java API (二): index创建删除 cluster管理  elastic官网有权威的java api 英文的 需要耐心看 这里整理下基本操作 创建maven工程添加依赖 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.2.2</ver

HOOK API(二)—— HOOK自己程序的 MessageBox

HOOK API(二) —— HOOK自己程序的 MessageBox 0x00 前言 以下将给出一个简单的例子,作为HOOK API的入门.这里是HOOK 自己程序的MessageBox,即将自己程序对MessageBox API的调用重定向到自己实现的API中,在自己定义的API中实现内容的替换. 需要注意的是,本例子的HOOK仅仅对自己实现的MFC窗口程序,当开始HOOK 后,自己的程序调用MessageBox将被重定向,但其他程序滴啊用MessageBox时是正常的. 在Windows中

利用google api生成二维码名片

利用google api生成二维码名片 二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码.堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成:矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用“点”表示二进制“1”,用“空”表示二进制“0”,“点”和“空”的排列组成代码. 堆叠式/行排式二维条码,如,Code 16K.Code 49.PDF417等. 矩阵式二维码,最流行莫过于QR CODE. 矩阵式二维码存储的数据量更大:可以包含数字.字符,及中文文本等混合内容:有一

TFS API:二、TFS 代码查询工作项

TFS API:二.TFS  代码查询工作项 首先我们需要认识TFS的两大获取服务对象的类. 他们分别为TfsConfigurationServer和TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS API服务类.他们的区别如下: 服务 TfsConfigurationServer (服务器级别) TfsTeamProjectCollection (集合级别) ITeamFoundationRegistry  √  √ IIdentityManagement

IOS7使用原生API进行二维码和条形码的扫描

使用IOS7原生API进行二维码条形码的扫描 IOS7之前,开发者进行扫码编程时,一般会借助第三方库.常用的是ZBarSDK,IOS7之后,系统的AVMetadataObject类中,为我们提供了解析二维码的接口.经过测试,使用原生API扫描和处理的效率非常高,远远高于第三方库. 一.使用方法示例 官方提供的接口非常简单,代码如下: @interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>//用于处理采集信息的代理