首先要明确一件事,Request这是个对象,不管使用PHP还是python还是什么java语言,虽然request这个对象可能叫的名字不一样,(在其他语言中可能叫什么HttpRequest),但是原理都是差不多。我们客户端发送请求给服务器,发送的就是这个Request对象。我们不能简单的以为我们在地址栏打了一行:www.xxxx.com 就以为请求就这点东西,其实Request对象里面包含了你要发送给服务器的很多东西。这节内容和之前的基础知识中的Http相呼应。
在Flask中,Request对象就叫做request,可以直接引用:from flask import request
上下文(context):
一直看到这个东西,却不知道这是个什么玩意,难以理解。简单说一下什么是请求上下文:我们客户端发送了请求给服务器,那么这个request对象就发送过去了。服务器那边就接收到了这个request,那么就可以使用一系列方法读取这个request对象中的内容(比如使用request.method 显示它用GET还是POST方式提交的,使用request.path 查看它请求的路径是什么)。而我们如果浏览器没有发送请求,那么在服务器端,你去使用request.method这些方法就会报错,因为这些方法需要客户端发送过来请求才能执行,也就是说,某些方法的执行需要一系列操作作为基础,需要前因后果这种关系(说的比较抽象),而这种前因后果就可以通俗理解为上下文。
form 一个包含解析过的从 POST 或 PUT 请求发送的表单对象的 MultiDict 。请注意上传的文件不会在这里,而是在 files 属性中。 args 一个包含解析过的查询字符串( URL 中问号后的部分)内容的 MultiDict 。 values 一个包含 form 和 args 全部内容的 CombinedMultiDict 。 cookies 一个包含请求中传送的所有 cookie 内容的 dict 。 stream 如果表单提交的数据没有以已知的 mimetype 编码,为性能考虑,数据会不经修改存储在这个流中。大多数情况下,使用可以把数据提供为字符串的 data 是更好的方法。流只返回一次数据。 headers 进入请求的标头存为一个类似字典的对象。 data 如果进入的请求数据是 Flask 不能处理的 mimetype ,数据将作为字符串存于此。 files 一个包含 POST 和 PUT 请求中上传的文件的 MultiDict 。每个文件存储为 FileStorage 对象。 其基本的行为类似你在 Python 中见到的标准文件对象,差异在于这个对象有一个 save() 方法可以把文件存储到文件系统上。 environ 底层的 WSGI 环境。 method 当前请求的 HTTP 方法 (POST , GET 等等) path script_root url base_url url_root 提供不同的方式来审视当前的 URL 。想象你的应用监听下面的 URL: http://www.example.com/myapplication 并且用户请求下面的 URL: http://www.example.com/myapplication/page.html?x=y 这个情况下,上面提到的属性的值会为如下: path /page.html script_root /myapplication base_url http://www.example.com/myapplication/page.html url http://www.example.com/myapplication/page.html?x=y url_root http://www.example.com/myapplication/