Rest-framework-API参考-Responses

Responses

Unlike basic HttpResponse objects, TemplateResponse objects retain 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.

不像基本HttpResponse对象,TemplateResponse对象保留的背景下,被认为提供了计算响应的细节。在响应过程中,直到需要时,才计算响应的最终输出。

—Django documentation

REST framework supports HTTP content negotiation by providing aResponseclass which allows you to return content that can be rendered into multiple content types, depending on the client request.

REST框架通过提供响应类来支持HTTP内容协商,它可以根据客户端请求返回可以呈现为多个内容类型的内容。

TheResponseclass subclasses Django'sSimpleTemplateResponse.Responseobjects are initialised with data, which should consist of native Python primitives. REST framework then uses standard HTTP content negotiation to determine how it should render the final response content.

响应类子类的simpletemplateresponse。响应对象的初始化数据,其中应包括原生Python原语。REST框架然后使用标准的HTTP内容协商来决定它应该如何呈现最终的响应内容。

There's no requirement for you to use theResponseclass, you can also return regularHttpResponseorStreamingHttpResponseobjects from your views if required. Using theResponseclass simply provides a nicer interface for returning content-negotiated Web API responses, that can be rendered to multiple formats.

在你使用响应类没有要求,如果在你的视图里需要,你也可以返回HttpResponse对象定期或StreamingHttpResponse。使用响应类只提供了一个更好的界面,用于返回内容协商的web API响应,可以呈现为多种格式。

Unless you want to heavily customize REST framework for some reason, you should always use anAPIViewclass or@api_viewfunction for views that returnResponseobjects. Doing so ensures that the view can perform content negotiation and select the appropriate renderer for the response, before it is returned from the view.

除非你想重因故自定义REST的框架,你应该总是使用一个APIView类或@api_view功能视图返回响应对象。这样可确保视图可以进行谈判的内容和选择响应适当的渲染,才从视图返回。

Creating responses

Response()

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

Unlike regularHttpResponseobjects, you do not instantiateResponseobjects with rendered content. Instead you pass in unrendered data, which may consist of any Python primitives.

不同于常规的HttpResponse对象,你没有实例化响应对象呈现的内容。相反,你通过在未着色的数据,它可以由任何Python原语组成。

The renderers used by theResponseclass cannot natively handle complex datatypes such as Django model instances, so you need to serialize the data into primitive datatypes before creating theResponseobject.

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

You can use REST framework'sSerializerclasses to perform this data serialization, or use your own custom serialization.

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

Arguments:

data: The serialized data for the response.序列化数据的响应。

status: A status code for the response. Defaults to 200. See alsostatus codes.为响应状态代码。默认为200。参见状态码。

template_name: A template name to use ifHTMLRendereris selected  .使用是否HTMLRenderer选择模板名称。

headers: A dictionary of HTTP headers to use in the response.一个HTTP头词典使用的响应。

content_type: The content type of the response. Typically, this will be set automatically by the renderer as determined by content negotiation, but there may be some cases where you need to specify the content type explicitly.响应的内容类型。通常情况下,这将自动被渲染的内容协商确定,但可能会有一些情况下,你需要指定内容类型明确。

Attributes属性

.data

The unrendered content of aRequestobject.

.status_code

The numeric status code of the HTTP response.

.content

The rendered content of the response. The.render()method must have been called before.contentcan be accessed.

.template_name

Thetemplate_name, if supplied. Only required ifHTMLRendereror some other custom template renderer is the accepted renderer for the response.

.accepted_renderer

The renderer instance that will be used to render the response.

Set automatically by theAPIViewor@api_viewimmediately before the response is returned from the view.

.accepted_media_type

The media type that was selected by the content negotiation stage.

Set automatically by theAPIViewor@api_viewimmediately before the response is returned from the view.

.renderer_context

A dictionary of additional context information that will be passed to the renderer's.render()method.

Set automatically by theAPIViewor@api_viewimmediately before the response is returned from the view.

Standard HttpResponse attributes

TheResponseclass extendsSimpleTemplateResponse, 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()

Signature:.render()

As with any otherTemplateResponse, 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 theaccepted_rendererinstance.

You won't typically need to call.render()yourself, as it's handled by Django's standard response cycle.


provided by由…规定

compute计算,估算;推断;用计算机计算;计算

final output末级输出

Response class反应类

depending on依据,根据

consist of包括;由…组成;由...组成

primitives原始人(primitive的复数形式)

final response最终特性

no requirement无要求

for you为你;面向你;献给你

do not不;勿

pass in进入

unrendered未抹灰的

consist of包括;由…组成;由...组成

Response class反应类

natively生来地,天然地

such as诸如;像,例如;譬如

Serializer串行器;编程语言中,可被序列化的

status code状况代号,状态码

See also请参阅

你可能感兴趣的:(Rest-framework-API参考-Responses)