美文网首页
django rest framework-Request请求和

django rest framework-Request请求和

作者: Python野路子 | 来源:发表于2019-05-30 11:13 被阅读0次

    Request请求对象:

    REST framework 引入了一个扩展HttpRequest的请求对象,提供了更灵活的请求解析。

    .data
    Request对象的核心功能是request.data属性,类似于request.POST,但是对于Web APIs更实用
    request.POST # 仅可处理表单数据,仅仅用于post请求.
    request.data # 处理任意数据, 可供 'POST', 'PUT' and 'PATCH' 请求使用。

    request.data 返回请求主题的解析内容。这跟标准的 request.POST 和 request.FILES 类似,并且还具有以下特点:

    • 包括所有解析的内容,文件(file) 和 非文件(non-file inputs)。
    • 支持解析 POST 以外的 HTTP method , 比如 PUT, PATCH。
    • 更加灵活,不仅仅支持表单数据,传入同样的 JSON 数据一样可以正确解析,并且不用做额外的处理(意思是前端不管提交的是表单数据,还是 JSON 数据,.data 都能够正确解析)

    .query_params

    request.query_params 等同于 request.GET,不过其名字更加容易理解。

    为了代码更加清晰可读,推荐使用 request.query_params ,而不是 Django 中的 request.GET,这样那够让你的代码更加明显的体现出 ----- 任何 HTTP method 类型都可能包含查询参数(query parameters),而不仅仅只是 'GET' 请求。

    .parser

    APIView 类或者 @api_view 装饰器将根据视图上设置的 parser_classessettings 文件中的 DEFAULT_PARSER_CLASSES 设置来确保此属性(.parsers)自动设置为 Parser 实例列表。

    通常不需要关注该属性......

    Response响应对象:

    REST framework 也引入了一个response对象,它是一种TemplateResponse类型,它渲染文本内容,并根据内容决定返回给客户端的数据类型。
    与普通 HttpResponse 对象不同,您不会使用渲染的内容实例化 Response 对象。相反,您传递的是未渲染的数据,可能包含任何 Python 对象。
    由于 Response 类使用的渲染器不能处理复杂的数据类型(比如 Django 的模型实例),所以需要在创建 Response 对象之前将数据序列化为基本的数据类型。
    你可以使用 REST framework 的 Serializer 类来执行序列化的操作,也可以用自己的方式来序列化。
    构造方法: Response(data, status=None, template_name=None, headers=None, content_type=None)

    return Response(data) # 通过客户端请求返回渲染的内容

    参数:
    data: 响应的序列化数据。
    status: 响应的状态代码。默认为200。
    template_name: 选择 HTMLRenderer 时使用的模板名称。
    headers: 设置 HTTP header,字典类型。
    content_type: 响应的内容类型,通常渲染器会根据内容协商的结果自动设置,但有些时候需要手动指定。

    Status Code 状态码:
    在你的视图中使用数字http 状态码不利于阅读,它很容易让你不会注意到代码的错误,
    REST framework为每个状态码提供了更加明确的标示,例如HTTP_400_BAD_REQUEST在status模块中,
    使用这个来代替数字是一个不错的方法

    装饰API视图:
    REST framework提供了两种封装器,你可以使用他们写views

    1. @api_view装饰器用在基于视图的方法上;
    2. APIView 装饰器用在类view中;

    这些装饰器提供一些功能,例如确保在你的视图中接收Request对象,例如在你的Response对象中添加上下文,
    这样我们就能实现内容通信。 这里装饰器也提供了一些行为,例如在合适的时候返回405 Method Not Allowed响应,
    例如处理任何在访问错误输入的request.data时出现的解析错误(ParseError)异常。

    相关文章

      网友评论

          本文标题:django rest framework-Request请求和

          本文链接:https://www.haomeiwen.com/subject/vwjmtctx.html