Django rest framework API Guide的 Responses 翻译

来源:互联网 发布:mac微信截图如何保存 编辑:程序博客网 时间:2024/05/23 16:02
Responses 响应
与基本的HttpResponse对象不同,TemplateResponse对象保留了视图提供的上下文的细节,以计算响应。响应的最终输出直到需要,稍后在响应过程中才计算出来。
----Django -文档
REST框架通过提供一个Response类来支持HTTP内容协商,它允许您返回可以呈现为多种内容类型的内容,这取决于客户端请求。
Response类的子类Django的SimpleTemplateResponse和Response对象是用数据初始化的,这些数据应该包含原生的Python原语。REST框架然后使用标准的HTTP内容协商来确定它应该如何呈现最终的响应内容。
没有必要使用Response类,如果需要,还可以从视图中返回常规的HttpResponse或StreamingHttpResponse对象。使用Response类简单地提供了一个更好的接口,用于返回内容协商的Web API响应,可以将其渲染成多种格式。
除非您出于某种原因需要大量定制REST框架,否则您应该始终使用APIView类或@APIView函数来查看返回Response对象的视图。这样做可以确保视图能够执行内容协商,并在从视图返回之前为响应选择合适的渲染器。

Creating responses 创建响应
Response()
Signature: Response(data, status=None, template_name=None, headers=None, content_type=None)
与常规的HttpResponse对象不同,您不会用呈现的内容实例化Response对象。相反,您可以传入未渲染的数据,这些数据可能由任何Python原语组成。
响应类使用的Response类不能本机处理复杂的数据类型,比如Django的模型实例,所以在创建Response对象之前,需要将数据序列化为原始数据类型。
您可以使用REST框架的Serializer类来执行此数据序列化,或者使用您自己的自定义序列化。
参数:
1 data : 响应的序列化数据。
2 status : 响应的状态代码。默认为200。也看status codes
3 template_name : 模板名称(如果选择了HTMLRenderer,将使用一个模板名称。)
4 headers : 在响应中使用HTTP头部的字典。
5 content_type : 响应的内容类型。通常,这将由内容协商确定的渲染器自动设置,但是可能会有一些情况需要明确地指定内容类型。

Attributes 属性
.data 数据
Request对象的未渲染内容。
.status_code 状态码
HTTP响应的数字状态代码。
.content 内容
响应的渲染内容。在可以访问.content之前,必须调用.render()方法。
.template_name 模板名称
如果提供template_name的话,只需要HTMLRender或其他自定义模板渲染器作为响应的被接受的渲染器。
.accepted_renderer 接受的渲染器
将用于渲染响应的渲染实例。
在从视图返回响应之前,立即由APIView或@APIView自动设置。
.accepted_media_type 接受的媒体类型
内容协商阶段选择的媒体类型。
在从视图返回响应之前,立即由APIView或@APIView自动设置。
.renderer_context 上下文渲染器
一个附加的上下文信息的字典,它将被传递给渲染器的.render()方法。
在从视图返回响应之前,立即由APIView或@APIView自动设置。

Standard HttpResponse attributes 标准的HttpResponse属性
Response类扩展了SimpleTemplateResponse,响应中也可以使用所有常见的属性和方法。例如,您可以以标准的方式设置响应:
response=Response()
response['Cache-Control']='no-cache'

.render() 渲染
与其他TemplateResponse一样,这个方法被调用来将响应的序列化数据渲染到最终的响应内容中。当调用.render()时,响应内容将被设置为在accepted_renderer 实例上调用.render(data, accepted_media_type, renderer_context)方法的结果。
您通常不需要调用.render(),因为它是由Django的标准响应周期处理的。
阅读全文
0 0
原创粉丝点击