response.py-Django REST框架

2019-10-31  本文已影响0人  Mead170810

回应-Django REST框架

response.py

回应

与基本的HttpResponse对象不同,Template Response对象保留视图为计算响应而提供的上下文的细节。响应的最终输出直到需要时才计算出来,稍后在响应过程中。

Django文档

REST框架通过提供Response类,它允许您返回可以呈现为多个内容类型的内容,具体取决于客户端请求。

这个Responseclass子类Django‘sSimpleTemplateResponse. Response对象是用数据初始化的,数据应该由原生Python原语组成。然后,REST框架使用标准的HTTP内容协商来确定它应该如何呈现最终的响应内容。

没有要求您使用Response类,也可以返回HttpResponseStreamingHttpResponse对象,如果需要,则从视图中提取。使用Response类只是为返回内容协商的WebAPI响应提供了一个更好的接口,可以将其呈现为多种格式。

除非出于某种原因需要大量自定义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类来执行此数据序列化,或使用您自己的自定义序列化。

论点:


属性

.数据

未呈现的、序列化的响应数据。

.状态代码

HTTP响应的数值状态代码。

.内容

呈现的响应内容。这个.呈现()方法之前必须调用过。.内容可以访问。

模板名

这个template_name,如果提供的话。只有在下列情况下才需要HTMLRenderer或者其他自定义模板呈现器是响应的可接受呈现程序。

接受渲染器

将用于呈现响应的呈现器实例。

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

接受媒体类型

由内容协商阶段选择的媒体类型。

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

.renderer上下文

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

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


标准HttpResponse属性

这个Response类扩展SimpleTemplateResponse,所有常见的属性和方法也都可以在响应中使用。例如,可以以标准方式设置响应的标题:

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

.呈现()

签署: .呈现()

和其他的一样TemplateResponse,则调用此方法将响应的序列化数据呈现为最终的响应内容。什么时候.呈现()时,响应内容将被设置为调用.render(data, accepted_media_type, renderer_context)方法的accepted_renderer举个例子。

你一般不需要打电话.呈现()您自己,因为它由Django的标准响应周期处理。

上一篇 下一篇

猜你喜欢

热点阅读