要求

如果你正在做基于REST的Web服务的东西......你应该忽略request.POST。

-马尔科姆Tredinnick,Django开发组

REST框架的Request类继承了标准HttpRequest的REST架构灵活的请求解析和请求认证,加入支持。


请求解析

REST框架的请求对象提供灵活的请求的解析,可以让你以同样的方式,你通常会处理表单数据和JSON数据或其他媒体的治疗请求。

。数据

request.data返回请求主体的被分析的内容。这是类似的标准request.POSTrequest.FILES不同的是属性:

  • 它包括所有分析的内容,包括文件和非文件输入。
  • 它支持解析的比其他的HTTP方法的内容POST,这意味着您可以访问的内容PUTPATCH要求。
  • 它支持REST架构灵活的请求解析,而不仅仅是支持表单数据。例如,您可以以同样的方式,你处理传入的表格数据处理传入的JSON数据。

欲了解更多详细信息,请参阅解析器文档

.query_params

request.query_params是更多的正确命名的代名词request.GET

为了您的代码中清楚起见,我们建议使用request.query_params,而不是Django的标准request.GET。这样做将有助于保持你的代码更正确,更明显的-任何HTTP方法类型可包括查询参数,而不只是GET请求。

.parsers

APIView类或@api_view装饰将确保这个属性被自动设置为列表Parser实例的基础上,parser_classes对视图设置或基于该DEFAULT_PARSER_CLASSES设置。

你通常不会需要访问这个属性。


注:如果客户端发送格式不正确的内容,然后访问request.data可能会产生一种ParseError。默认情况下,REST框架的APIView类或@api_view装饰将捕获错误并返回一个400 Bad Request响应。

如果客户端发送与内容类型,它不能被解析那么的请求UnsupportedMediaType,将引发异常,默认情况下将被捕获并返回一个415 Unsupported Media Type响应。


内容协商

请求暴露出一些属性,使您能够确定内容协商阶段的结果。这可以让你实现的行为,如选择不同的媒体类型不同的序列化方案。

.accepted_renderer

这是由内容协商阶段选择的渲染器实例。

.accepted_media_type

表示是由内容协商阶段接受了媒体类型的字符串。


认证

REST框架提供了灵活的,每个请求验证,让您能够:

  • 您的API的不同部分使用不同的身份验证策略。
  • 支持使用多个认证策略。
  • 提供用户和与进入请求关联令牌信息。

。用户

request.user通常返回的实例django.contrib.auth.models.User,虽然行为取决于所使用的认证策略。

如果请求是未经验证的默认值request.user是一个实例django.contrib.auth.models.AnonymousUser

欲了解更多详细信息,请参阅验证文档

.auth

request.auth返回任何额外的认证环境。的确切行为request.auth取决于所使用的认证策略,但它通常可以为令牌,该请求针对认证的一个实例。

如果该请求是未认证的,或者如果没有附加上下文存在时,默认值request.authNone

欲了解更多详细信息,请参阅验证文档

.authenticators

APIView类或@api_view装饰将确保这个属性被自动设置为列表Authentication实例的基础上,authentication_classes对视图设置或基于该DEFAULT_AUTHENTICATORS设置。

你通常不会需要访问这个属性。


注意:您可能会看到一个WrappedAttributeError调用时提出.user.auth属性。这些错误来自认证为标准起源AttributeError,然而,他们是为了防止它们被外部属性访问被抑制再提出一个不同的异常类型是必要的。Python将无法识别AttributeError来自认证起源而会认为请求对象不具有.user.auth财产。该认证将需要修复。


浏览器增强功能

REST框架支持的几个浏览器增强功能,例如基于浏览器的PUTPATCHDELETE形式。

。方法

request.method返回大写的请求的HTTP方法的字符串表示。

基于浏览器的PUTPATCHDELETE形式是透明的支持。

欲了解更多信息,请参阅浏览器的增强文档

。内容类型

request.content_type,返回表示如果未提供媒体类型的HTTP请求的身体,或空字符串的媒体类型的字符串对象。

你不会通常需要直接访问请求的内容类型,因为你通常依靠REST框架的默认请求解析行为。

如果你确实需要访问的内容类型的请求,你应该使用.content_type属性优先使用request.META.get('HTTP_CONTENT_TYPE'),因为它提供了基于浏览器的无形式的内容透明的支持。

欲了解更多信息,请参阅浏览器的增强文档

。流

request.stream 返回表示请求主体的内容流。

你不会通常需要直接访问请求的内容,你会通常依靠REST框架的默认请求解析行为。


标准的HttpRequest属性

由于REST架构的Request扩展Django的HttpRequest,所有其他的标准属性和方法也可提供。例如,request.METArequest.session词典可为正常。

需要注意的是,由于执行的原因Request类不继承HttpRequest类,而是扩展使用组成的类。

rest framework Request的更多相关文章

  1. Asp.net MVC十问十答[译]

    1. Explain MVC (Model-View-Controller) in general? MVC (Model-View-Controller) is an architectural s ...

  2. Python调用微博API

    上头叫通过微博ID获取用户公布过的历史微博内容,于是研究了下新浪微博提供的API 1 首先在微博开放中心下"创建应用"创建一个应用,应用信息那些随便填,填写完成后,不须要提交审核, ...

  3. 请求服务(RequestService)

    一个module中的web组件,负责将Service的结果按照适当的规范输出给前端.格式:http://server/moduleID/param0/param1/paramN/p.TYPE格式上包含 ...

  4. .NET CORE 2.0之 httpcontext

    HttpContext  在之前的.NET framework 是一个非常常用且强大的类,在.NET CORE2.0中要像以前用是不太方便的了, 要是用sesson 首先需要在startup 的Con ...

  5. windows类书的学习心得

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  6. Entity Framework在Asp.net MVC中的实现One Context Per Request(附源码)

    上篇中"Entity Framework中的Identity map和Unit of Work模式", 由于EF中的Identity map和Unit of Work模式,EF体现 ...

  7. python+request+robot framework接口自动化测试

    python+requests实现接口的请求前篇已经介绍,还有不懂或者疑问的可以访问 python+request接口自动化框架 目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的 ...

  8. How To Get Log, Trace Files In OA Framework Pages And Concurrent Request Programs

    Goal   Solution   References APPLIES TO: Oracle Supplier Lifecycle Management - Version 12.1.2 and l ...

  9. Django Rest framework基础使用之Request/Response

    1.Request restframework提供了一个Request对象(rest_framework.request.Request) Request对象继承了Django默认的HttpReque ...

随机推荐

  1. Mysql主从架构

    Mysql主从架构 1. 克隆虚拟机 克隆的虚拟机的网络适配,使得虚拟机可以进入局域网 vi /etc/sysconfig/network-scripts/ifcfg-eth0 删除 HWADDR所在 ...

  2. 网络之一次http请求的完整过程

    关于网络的知识平时可能真正用的比较少,但是有一些点还是需要总结的: 完成一次http请求要大致可以分为7个步骤: 一.TCP三次握手 第一次握手:建立连接.客户端发送连接请求报文段,将SYN位置为1, ...

  3. Qt开发Activex笔记(一):环境搭建、基础开发流程和演示Demo

    前言   使用C#开发动画,绘图性能跟不上,更换方案使用Qt开发Qt的控件制作成OCX以供C#调用,而activex则是ocx的更高级形式.  QtCreator是没有Active控件项目的,所有需要 ...

  4. C++中关于输入cin的一些总结

    (1)cin 在理解cin功能时,不得不提标准输入缓冲区.当我们从键盘输入字符串的时候需要敲一下回车键才能够将这个字符串送入到缓冲区中,那么敲入的这个回车键(\r)会被转换为一个换行符\n,这个换行符 ...

  5. 计算机网络 part2

    一.UDP协议 1.概述 UDP提供不可靠的服务,无连接(不存在建立连接的时延),首部开销相对TCP小,没有拥塞控制,提供最大努力交付,面向报文(无论多长的报文UDP也只加一个头部就往下发:TCP面向 ...

  6. BZOJ1001 狼抓兔子(网络流转最短路:对偶图)

    题意: 给一个如图形式的\(n*m\)的方格,从左上走到右下,给出边权,问分成两块所需的最小代价.\(n,m\leq1000\). 思路: 显然是个最小割,但是\(O(n^2m)\)的复杂度很高,虽然 ...

  7. Windows font-size: 10px; bug

    Windows font-size: 10px; bug Windows 最小只能渲染 font-size: 12px; ???屏幕分辨率 macOS 正常渲染 10px PC 最小只能渲染 font ...

  8. CSS & new class name

    CSS & new class name { test: /\.((s*)css|sass)$/, // test: /\.(css|scss|sass)$/, use: ExtractTex ...

  9. Huffman coding & Huffman tree

    Huffman coding & Huffman tree Huffman coding 哈夫曼编码 / 最优二元前缀码 Huffman tree 哈夫曼树 / 最优二叉树 https://w ...

  10. GitHub Packages

    GitHub Packages https://github.com/xgqfrms?tab=packages // Step 1: Use `publishConfig` option in you ...