Django-restframework10 Response对象

来源:互联网 发布:阿里云服务器快照收费 编辑:程序博客网 时间:2024/06/05 06:33

1. 简介

  • 和基本的HttpResponse objects不同,TemplateResponse objects会保存视图函数计算出来的响应上下文,最终输出的响应对象在需要时才会被计算
  • REST框架提供一个Response对象以支持HTTP内容协商,Response依据客户端各种request.content_type提供相应的媒体类型
  • 没有要求必须使用Response,也可以使用HttpResponse或者StreamingHttpResponse。利用Response对象提供了一个简洁的接口返回响应。
  • 除非你想深度个性化REST框架,否则你应该使用APIView或这@api_view装饰器

2. 创建一个Response对象

  1. Response()

    Response(data, status=None, template_name=None, headers=None, content_type=None)

    • 不像普通的HttpResponse objects,不需要用渲染过的文本来实例化Response对象,你可以用任何未经渲染的数据,如存在的任何Python原始对象
    • 渲染器本身不能处理复杂的数据形式,如数据库模型,所以在创建Response对象之前,需要序列化数据成原始的数据类型,利用REST框架的Serializer或者自定义的序列化器
    • 参数:
    • data: 序列化处理后的数据
    • status: res状态码,默认200
    • template_name: 模板名字,如果使用HTMLRenderer渲染成html数据
    • headers: 返回给用户的响应头
    • content_type: 返回数据的类型,一般是根据请求的内容协商结果自动设置
  2. 属性

    • data:未经序列化的请求对象
    • status_code: HTTP response的状态码
    • content: 必须先渲染render()之后才能调用.content
    • template_name: 如果应用了,那么只接受HTMLRenderer或者自定义的template renderer 渲染之后的数据
    • accepted_renderer: 设置用于渲染请求数据的渲染器
    • accepted_media_type:指定的媒体类型
    • renderer_context: 附加的字典信息,APIView和 @api_view会自动在马上就要返回给客户端的时候才会被渲染
  3. 标准的HttpResponse对象
    • render():渲染序列化之后的数据
    • .render(data, accepted_media_type, renderer_context) 渲染方式accepted_renderer的实例
原创粉丝点击