前言
在 Flask 中 由全局对象 request 来提供请求信息。
Request 请求对象
首先,您必须从 flask 模块导入请求对象:
代码语言:javascript复制from flask import request
通过使用 method 属性可以操作当前请求方法,通过使用 form 属性处理表单数据(在 POST 或者 PUT 请求 中传输的数据)。 以下是使用上述两个属性的例子:
代码语言:javascript复制from flask import Flask
from flask import render_template
from flask import request
app = Flask(__name__)
@app.route('/login', methods=['POST', 'GET'])
def login():
error = None
if request.method == 'POST':
if request.form['username'] == 'test':
return 'test 用户'
else:
error = 'Invalid username/password'
return render_template('login.html', error=error)
if __name__ == '__main__':
app.run()
login.html模板内容
代码语言:javascript复制<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login 表单</title>
</head>
<body>
<form method="post">
<div>
<label for="user">用户名</label>
<input name="username" id="user" placeholder="输入用户名">
</div>
<input type="submit" value="提交按钮">
<div>
<p>{% if error %} {{ error }} {% endif %}</p>
</div>
</form>
</body>
</html>
启动服务后访问页面
输入username不等于test,就会出现error提示、
在上面代码中request.form获取表单输入的数据,request.method 获取用户请求方式。
args 属性
要操作 URL (如 ?key=value )中提交的参数可以使用 args 属性
代码语言:javascript复制searchword = request.args.get('key', '')
使用示例
代码语言:javascript复制from flask import Flask
from flask import render_template
from flask import request
app = Flask(__name__)
@app.route('/demo', methods=['GET'])
def search():
key = request.args.get('user')
return f'query 查询参数的值:{key}'
if __name__ == '__main__':
app.run()
启动服务后,输入请求地址
代码语言:javascript复制http://127.0.0.1:5000/demo?user=yoyo
运行结果
常用的属性
request对象常用的属性
属性 | 功能 | |
---|---|---|
form | 一个从POST和PUT请求解析的 MultiDict(一键多值字典)。 | |
args | MultiDict,要操作 URL (如 ?key=value )中提交的参数可以使用 args 属性:searchword = request.args.get(‘key’, ‘’) | |
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 | 获取请求文件路径:/myapplication/page.html | |
base_url | 获取域名与请求文件路径:http://127.0.0.1:5000/demo | |
url | 获取全部url:http://127.0.0.1:5000/demo?id=1&edit=edit | |
url_root | 获取域名:http://www.baidu.com/ | |
is_xhr | 如果请求是一个来自JavaScript XMLHttpRequest的触发,则返回True,这个只工作在支持X-Requested-With头的库并且设置了XMLHttpRequest。 | |
endpoint | endpoint匹配请求,这个与view_args相结合,可是用于重构相同或修改URL。当匹配的时候发生异常,会返回None。 | |
json | 如果mimetype是application/json,这个参数将会解析JSON数据,如果不是则返回None。可以使用这个替代get_json()方法。 | |
max_content_length | 只读,返回MAX_CONTENT_LENGTH的配置键。 |
2022年第 12期《python接口web自动化 测试开发》课程,9月17号开学!
本期上课时间:2022年9月17号 - 2022年12月17号,周六周日上午9:00-11:00