request参数
指定请求方式
在Flask中,可以定义路由默认的请求方式:
利用 methods
参数可以自己指定一个接口的请求方式
get
方式:把请求参数放到为url的?后面,每个请求参数格式为:参数名=参数值。参数之间采用&符号隔开。采用的字符数据传输,所以也叫明文的请求
# get请求
@app.route('/test', methods=['GET'])
def test():
user_id = request.args.get('user_id')
print('用户id是:{}'.format(user_id))
user_name = request.args.get('user_name')
print('用户的名字是:{}'.format(user_name))
return '请求成功'
HTML
文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试请求方式和请求参数</title>
<style>
.parent{
text-align: center;
}
</style>
</head>
<body>
<div class="parent">
<h2>请求方式</h2>
<a href="/test?user_id=1001&user_name=SanHa">get请求</a>
<h5>post请求</h5>
<form action="/test2" method="post" enctype="multipart/form-data">
姓名:<input type="text" name="user_name"><br>
年龄:<input type="text" name="user_age"><br>
上传:<input type="file" name="image"><br>
<input type="submit">
</form>
</div>
</body>
</html>
post
: 表单提交,并且采用字节流的方式传递数据
# post请求
@app.route('/test2', methods=['POST'])
def test2():
name = request.form.get('user_name')
age = request.form.get('user_age')
print('name的值是:{}类型是:{}'.format(name, type(name)))
print('age的值是:{}类型是:{}'.format(age, type(age)))
return 'post请求成功'
其他参数
如果想要获取其他地方传递的参数,可以通过Flask
提供的request
对象来读取。
不同位置的参数都存放在request
的不同属性中
属性 | 说明 | 类型 |
---|---|---|
data | 记录请求的数据,并转换为字符串 | * |
form | 记录请求中的表单数据 | MultiDict |
args | 记录请求中的查询参数 | MultiDict |
cookies | 记录请求中的cookie信息 | Dict |
headers | 记录请求中的报文头 | EnvironHeaders |
method | 记录请求使用的HTTP方法 | GET/POST |
url | 记录请求的URL地址 | string |
files | 记录请求上传的文件 | * |
例如 想要获取请求 /test?user_id=1001
中 user_id
的参数,可以按如下方式使用:
上传文件
客户端上传文件到服务器,并保存到服务器中
test.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试请求方式和请求参数</title>
<style>
.parent{
text-align: center;
}
</style>
</head>
<body>
<div class="parent">
<h2>请求方式</h2>
<a href="/test?user_id=1001&user_name=SanHa">get请求</a>
<h5>post请求</h5>
<form action="/test2" method="post" enctype="multipart/form-data">
姓名:<input type="text" name="user_name"><br>
年龄:<input type="text" name="user_age"><br>
上传:<input type="file" name="image"><br>
<input type="submit">
</form>
</div>
</body>
</html>
# post请求
@app.route('/test2', methods=['POST'])
def test2():
name = request.form.get('user_name')
age = request.form.get('user_age')
print('name的值是:{}类型是:{}'.format(name, type(name)))
print('age的值是:{}类型是:{}'.format(age, type(age)))
# 文件上传 注意:需要在表单页面中加上属性 enctype="multipart/form-data"
f = request.files['image']
f.save('./static/demo.jpg')
return 'post请求成功'
post请求视图函数
上传文件