Django REST framework-API指南02-Responses 原创翻译

python技术交流群332680349,资源分享,技术交流。

01-响应

与基本的HttpResponse对象不同,TemplateResponse对象保留视图提供的用于计算响应的上下文的详细信息。响应的最后输出在需要之前不会计算,稍后在响应过程中计算。
出自 Django文档

REST框架通过提供一个Response类来支持HTTP内容协商,该类允许您根据客户端请求将可以呈现为多个内容类型的内容返回。

在Response类的子类Django的SimpleTemplateResponse.Response对象,用数据初始化,它们应该由Python自带的数据类型去做。然后,REST框架使用标准HTTP内容协商来确定如何呈现最终响应内容。

您不需要使用Response该类,如果需要,还可以从视图中返回常规HttpResponse或StreamingHttpResponse对象。使用Response该类简单地提供了一个更好的界面,用于返回内容协商的Web API响应,可以呈现为多种格式。

除非您想要为某种原因大量定制REST框架,否则应始终为对象的视图使用APIView类或@api_view函数返回Response。这样做可以确保视图在它返回之前可以执行内容协商并为响应选择适当的渲染器。

02-创建响应

响应函数(Response())

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

与常规HttpResponse对象不同,您不会使用已渲染的内容实例化对象。而是传递未渲染的数据,这些数据可能是任何Python基本数据类型。

Response类使用的渲染器无法处理诸如Django模型实例之类的复杂数据类型,因此您需要在创建Response对象之前将数据序列化为简单的数据类型。

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

参数:

data:响应的序列化数据。
status:响应的状态代码。默认为200.另请参见状态码。
template_name:HTMLRenderer选择使用的模板名称。
headers:在响应中使用HTTP头的字典。
content_type:响应的内容类型。通常,这将由渲染器自动设置,由内容协商确定,但可能会出现某些情况,您需要明确指定内容类型。

03-属性

数据属性(.data)

Request对象的未渲染内容。

状态码属性(.status_code)

HTTP响应的数字状态代码。

内容属性(.content)

渲染好内容的响应。该.render()方法必须先被调用才能.content访问。

模板名称属性(.template)

这个template_name,如果提供。只有HTMLRenderer或其他一些其他自定义模板渲染器才是响应的接受渲染器。

接收渲染器(.accepted_renderer)

将用于渲染响应的渲染器实例。
在视图返回响应之前,APIView或@api_view自动设置。

接收媒体类型(.acceptd_media_type)

由内容谈判阶段选择的媒体类型。
在视图返回响应之前APIView或@api_view之前自动设置。

渲染器上下文(.renderer_context)

将传递给渲染器.render()方法的附加上下文信息的字典。
在视图返回响应之前,APIView或@api_view自动设置。

04-标准http响应属性

Response类扩展了SimpleTemplateResponse,和所有常见的属性和方法也可以回应在这个响应中。例如,您可以以标准方式在响应中设置头文件:

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

渲染器函数(.render())

特征签名:.render()

与任何其他TemplateResponse方法一样,这种方法被称为将响应的序列化数据呈现到最终响应内容中。当.render()被调用时,在法accepted_renderer实例中,响应内容将被设置为调用的结果在.render(data, accepted_media_type, renderer_context)方法。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值