回应-Django REST框架
回应
与基本的HttpResponse对象不同,Template Response对象保留视图为计算响应而提供的上下文的细节。响应的最终输出直到需要时才计算出来,稍后在响应过程中。
— Django文档
REST框架通过提供Response
类,它允许您返回可以呈现为多个内容类型的内容,具体取决于客户端请求。
这个Response
class子类Django‘sSimpleTemplateResponse
. Response
对象是用数据初始化的,数据应该由原生Python原语组成。然后,REST框架使用标准的HTTP内容协商来确定它应该如何呈现最终的响应内容。
没有要求您使用Response
类,也可以返回HttpResponse
或StreamingHttpResponse
对象,如果需要,则从视图中提取。使用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
类来执行此数据序列化,或使用您自己的自定义序列化。
论点:
-
data
响应的序列化数据。 -
status
*响应的状态代码。默认为200。另见状态码. -
template_name
*要使用的模板名称HTMLRenderer
被选中。 -
headers
在响应中使用的HTTP头字典。 -
content_type
*答复的内容类型。通常,这将由内容协商确定的呈现程序自动设置,但在某些情况下,您可能需要显式地指定内容类型。
属性
.数据
未呈现的、序列化的响应数据。
.状态代码
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的标准响应周期处理。
网友评论