request对象
Flask的request对象封装了从客户端发来的请求报文,可以从它获取请求报文的所有数据
获取请求URL
假设请求的URL是http://helloflask.com/hello?name=Grey,当Flask接收到请求后,请求对象会提供多个属性来获取URL的各个部分,常用的属性如下:
属性 | 值 |
---|---|
path | /hello |
full_path | /hello?name=Grey |
host | helloflask.com |
host_url | http://helloflask.com/ |
base_url | http://helloflask.com/hello |
url | http://helloflask.com/hello?name=Grey |
url_root | http://helloflask.com/ |
获取其他信息
属性/方法 | 说明 |
---|---|
args | 存储解析后的查询字符串,可通过字典方式获取键值 |
blueprint | 蓝本的名称 |
cookies | 一个包含所有随请求提交的cookies的字典 |
data | 包含字符串形式的请求数据 |
endpoint | 与当前请求相匹配的端点值 |
files | 包含所有上传文件,可以使用字典的形式获取文件。使用的键为文件input标签中的name属性值,对应的值为Werkzeug的FileStorage对象,可以调用save()方法并传入保存路径来保存文件 |
form | 包含解析后的表单数据,表单字段值通过input标签的name属性值作为键获取 |
values | 结合了args和form属性的值 |
get_data(cache=True, as_text=False, parse_form_data=False) | 获取请求中的数据,默认读取为字节字符串,将as_text设为True则返回值将是解码后的unicode字符串 |
get_json(self, force=False, silent=False, cache=True | 作为JSON解析并返回数据,如果MIME类型不是JSON,返回None;解析出错则抛出BadRequest异常,如果silent设为True则返回None;cache设置是否缓存解析后的JSON数据 |
headers | 包含首部字段,可以以字典的形式操作 |
is_json | 通过MIME类型判断是否为JSON数据,返回布尔值 |
json | 包含解析后的JSON数据,内部调用get_json(),可通过字典的方式获取键值 |
method | 请求的HTTP方法 |
referrer | 请求发起的源URL,即referer |
scheme | 请求的URL模式(http或https) |
user_agent | 用户代理(User Agent),包含了用户的客户端类型,操作系统类型等信息 |
实例
获取host
from flask import Flask, request
app = Flask(__name__)
@app.route('/hello')
def hello():
host = request.host
return host
获取查询字符串
使用get是为了防止没有name的键,而出现的400错误。没有name时,默认为Flask
@app.route('/hello')
def hello():
name = request.args.get('name', 'Flask')
return '<h1>Hello, %s!</h1>' % name