zoukankan      html  css  js  c++  java
  • rest framework Response

    回应

    不同于基本的HttpResponse对象,TemplateResponse对象保留先前由视图提供给计算响应上下文的细节。该响应的最终输出,不计算直到需要它,以后在响应过程。

    - Django文档

    REST框架支持HTTP提供了一个内容协商Response类,它允许你返回一个可呈现为多种内容类型,根据不同的客户端请求的内容。

    Response类的子类Django的SimpleTemplateResponseResponse对象初始化的数据,这应该包括原生的Python原语。REST框架将使用标准的HTTP内容协商,以决定应如何使最终响应的内容。

    有没有要求你使用Response类,您还可以返回定期HttpResponse或者StreamingHttpResponse如果需要的对象从您的观点。使用Response类简单地提供内容返回协商的Web API响应,可以呈现多种格式有着更好的接口。

    除非你想大量定制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:内容类型的响应。通常情况下,这将自动渲染器,通过内容协商确定设置,但如果您需要明确指定内容类型可能会有一些情况。

    属性

    。数据

    响应的非再生,序列化的数据。

    .status_code

    HTTP响应的数字状态代码。

    。内容

    响应的呈现的内容。在.render()必须之前已经调用的方法.content可以被访问。

    .template_name

    template_name,如果提供。仅在必要时HTMLRenderer或其他自定义模板渲染器的响应公认的渲染器。

    .accepted_renderer

    将被用来渲染响应的渲染器实例。

    通过自动设置APIView@api_view立即响应从视图返回之前。

    .accepted_media_type

    这是由内容协商阶段选择的介质类型。

    通过自动设置APIView@api_view立即响应从视图返回之前。

    .renderer_context

    额外的上下文信息的字典,这些将被传递到渲染器的.render()方法。

    通过自动设置APIView@api_view立即响应从视图返回之前。


    标准的HttpResponse属性

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

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

    .render()

    签名: .render()

    与任何其他TemplateResponse被调用此方法以使反应成最终的应答内容的序列化的数据。当.render()被调用时,响应内容将被设置为调用的结果.render(data, accepted_media_type, renderer_context)对方法accepted_renderer实例。

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

  • 相关阅读:
    STM32 + RT Thread OS 学习笔记[三]
    全代码实现ios-1
    HTML5 Web Speech API 结合Ext实现浏览器语音识别以及输入
    全代码实现ios-2
    从零开始学C++之虚函数与多态(一):虚函数表指针、虚析构函数、object slicing与虚函数
    二进制程序分析工具Pin在Windows系统中的安装和使用方法
    使用U盘安装Ubuntu系统的实践小结
    HDU 1874 畅通工程续
    JSP页面上用横线代替文本框
    Mysql设置编码
  • 原文地址:https://www.cnblogs.com/pyliuwei/p/12468678.html
Copyright © 2011-2022 走看看