前言
在进行Flask开发中,前端需要发送不同的请求及各种带参数的方式,比如GET方法在URL后面带参数和POST在BODY带参数,有时候又是POST的表单提交方式,这个时候就需要从request
提取参数。这篇文章是总结如何使用request
。
关于request
在Flask的官方文档中是这样介绍request
的:
对于 Web 应用,与客户端发送给服务器的数据交互至关重要。在 Flask 中由全局的 request 对象来提供这些信息。
从Flask模块导入request
:
from flask import request
- 1
request的属性
下面是request可使用的属性,其中黑体是比较常用的。
- form
一个从POST和PUT请求解析的 MultiDict(一键多值字典)。
- args
MultiDict,要操作 URL (如 ?key=value )中提交的参数可以使用 args 属性:
searchword = request.args.get(‘key‘, ‘‘)
- 1
- values
CombinedMultiDict,内容是
form
和args
。可以使用values替代form和args。
- cookies
顾名思义,请求的cookies,类型是dict。
- stream
在可知的mimetype下,如果进来的表单数据无法解码,会没有任何改动的保存到这个·stream·以供使用。很多时候,当请求的数据转换为string时,使用
data
是最好的方式。这个stream只返回数据一次。 - headers
请求头,字典类型。
- data
包含了请求的数据,并转换为字符串,除非是一个Flask无法处理的mimetype。
- files
MultiDict,带有通过POST或PUT请求上传的文件。
- environ
WSGI隐含的环境配置。
- method
请求方法,比如POST、GET。
- path
- script_root
- url
- base_url
- url_root
如果用户请求如下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/ |
- is_xhr
如果请求是一个来自
JavaScript XMLHttpRequest
的触发,则返回True
,这个只工作在支持X-Requested-With
头的库并且设置了XMLHttpRequest
。 - blurprint
蓝本名字。
- endpoint
endpoint匹配请求,这个与
view_args
相结合,可是用于重构相同或修改URL。当匹配的时候发生异常,会返回None。 - get_json(force=False, silent=False, cache=True)
- json
如果
mimetype
是application/json
,这个参数将会解析JSON数据,如果不是则返回None。可以使用这个替代get_json()方法。
- max_content_length
只读,返回
MAX_CONTENT_LENGTH
的配置键。 - module
如果请求是发送到一个实际的模块,则该参数返回当前模块的名称。这是弃用的功能,使用
blueprints
替代。 - on_json_loading_failed(e)
- routing_exception = None
如果匹配URL失败,这个异常将会/已经抛出作为请求处理的一部分。这通常用于
NotFound
异常或类似的情况。 - url_rule = None
内部规则匹配请求的URL。这可用于在URL之前/之后检查方法是否允许(request.url_rule.methods) 等等。
默认情况下,在处理请求函数中写下
print(‘request.url_rule.methods‘, request.url_rule.methods)
会打印:
request.url_rule.methods {‘GET’, ‘OPTIONS’, ‘HEAD’}
- view_args = None
一个匹配请求的view参数的字典,当匹配的时候发生异常,会返回None。
原文地址:https://www.cnblogs.com/yanzi-meng/p/8251089.html