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
- Django rest framework API Guide的 Responses 翻译
- Django REST framework-API指南02-Responses 原创翻译
- Django rest framework API Guide的 Requests 翻译
- Django rest framework API Guide的 Views 翻译
- Django rest framework API Guide的 Generic views 翻译
- Django REST framework-教程02-Requests and Responses原创翻译
- Django REST framework API
- Django REST framework-API指南01-Requests 原创翻译
- Django REST framework-API指南04-Generic views 原创翻译
- Django REST framework-API指南05-ViewSets 原创翻译
- Django-Rest-Framework 教程: 2. Requests 和 Responses
- django-rest-framework指南(2):Requests and Responses
- [django]禁用 Django Rest Framework 的 Browsable API
- Django REST framework API开发
- python调试django-rest-framework API的小工具--httpie
- Django REST framework-API指南03-Class-based Views 原创翻译
- Django Rest FrameWork 全部API简述
- 利用 Django REST framework 编写 RESTful API
- 『机器学习』工业级实践经验汇总
- 深入理解java中final关键字
- 基于Android Architecture Components的应用架构指南
- MySql count去掉重复语句
- drools 学习笔记
- Django rest framework API Guide的 Responses 翻译
- Java底层机制
- 如何下载行政地名(矢量数据)
- org.json库的使用
- Python中的__future__模块
- leetcode 241. Different Ways to Add Parentheses 添加括号问题 + 按照index递归
- WGS84到高斯投影的转化
- Python中定位到某一文本框输入搜索字段,为什么文字写不进去。 'utf8' codec can't decode byte 0xba in position 0: invalid start by
- union和struct