Django REST framework API 指南(1):请求
Django REST framework API 指南(2):响应
Django REST framework API 指南(3):视图
Django REST framework API 指南(4):通用视图
Django REST framework API 指南(5):视图集
Django REST framework API 指南(6):路由
Django REST framework API 指南(7):解析python
官方原文连接django
与基本的 HttpResponse 对象不一样,TemplateResponse 对象保留了视图提供的用于计算响应的上下文的详细信息。直到须要时才会计算最终的响应输出,也就是在后面的响应过程当中进行计算。 — Django 文档api
REST framework 经过提供一个 Response
类来支持 HTTP 内容协商,该类容许你根据客户端请求返回不一样的表现形式(如: JSON ,HTML 等)。ide
Response
类是 Django 的 SimpleTemplateResponse
的子类。Response
对象使用数据进行初始化,数据应由 Python 对象(native Python primitives)组成。而后 REST framework 使用标准的 HTTP 内容协商来肯定它应该如何渲染最终响应的内容。post
固然,您也能够不使用 Response
类,直接返回常规 HttpResponse
或 StreamingHttpResponse
对象。 使用 Response
类只是提供了一个更好的交互方式,它能够返回多种格式。ui
除非因为某种缘由须要大幅度定制 REST framework ,不然应该始终对返回 Response
对象的视图使用 APIView
类或 @api_view
装饰器。这样作能够确保视图执行内容协商,并在视图返回以前为响应选择适当的渲染器。spa
与普通 HttpResponse
对象不一样,您不会使用渲染的内容实例化 Response
对象。相反,您传递的是未渲染的数据,可能包含任何 Python 对象。rest
因为 Response
类使用的渲染器不能处理复杂的数据类型(好比 Django 的模型实例),因此须要在建立 Response
对象以前将数据序列化为基本的数据类型。code
你可使用 REST framework 的 Serializer
类来执行序列化的操做,也能够用本身的方式来序列化。对象
构造方法: Response(data, status=None, template_name=None, headers=None, content_type=None)
参数:
data
: 响应的序列化数据。status
: 响应的状态代码。默认为200。template_name
: 选择 HTMLRenderer
时使用的模板名称。headers
: 设置 HTTP header,字典类型。content_type
: 响应的内容类型,一般渲染器会根据内容协商的结果自动设置,但有些时候须要手动指定。尚未渲染,但已经序列化的响应数据。
状态码
将会返回的响应内容,必须先调用 .render()
方法,才能访问 .content
。
只有在 response 的渲染器是 HTMLRenderer
或其余自定义模板渲染器时才须要提供。
用于将会返回的响应内容的渲染器实例。
从视图返回响应以前由 APIView
或 @api_view
自动设置。
内容协商阶段选择的媒体类型。
从视图返回响应以前由 APIView
或 @api_view
自动设置。
将传递给渲染器的 .render()
方法的附加的上下文信息字典。
从视图返回响应以前由 APIView
或 @api_view
自动设置。
Response
类扩展于 SimpleTemplateResponse
,而且响应中也提供了全部经常使用的属性和方法。例如,您能够用标准方式在响应中设置 header:
response = Response()
response['Cache-Control'] = 'no-cache'
复制代码
与其余任何 TemplateResponse
同样,调用此方法将响应的序列化数据呈现为最终响应内容。响应内容将设置为在 accepted_renderer
实例上调用 .render(data,accepted_media_type,renderer_context)
方法的结果。
一般不须要本身调用 .render()
,由于它是由 Django 处理的。