一、后台获取请求数据
1、POST请求
前台
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单请求</title>
</head>
<body>
<div>
<form action="/test/" method="POST">
<div>
<label for="username">用户</label>
<input type="text" name="username" id="username" />
</div>
<div>
<label for="password">密码</label>
<input type="password" name="password" id="password" />
</div>
<div>
<input type="submit" value="提交" />
</div>
</form>
</div>
</body>
</html>
后台
from flask import Flask,request,render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template('test.html')
@app.route('/test/', methods=['GET', 'POST'], endpoint='test01')
def test():
getData = request.args # 利用request对象获取GET请求数据
print('获取的GET数据为:', getData) # 打印获取到的GET数据 ImmutableMultiDict([])
postData = request.form # 利用request对象获取POST请求数据
print('获取的POST数据为:', postData) # 打印获取到的POST请求 ImmutableMultiDict([('username', '456'), ('password', '789')])
username = request.form.get('username')
password = request.form.get('password')
print(username,password) #456 789
return '这是测试页面'
if __name__ == '__main__':
app.run(debug=True)
如果username有多个值,可以用request.form.getlist('username'),该方法将返回一个列表。
2、GET请求
前台
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单请求</title>
</head>
<body>
<div>
<form action="/test/" method="GET"> //改变请求方式
<div>
<label for="username">用户</label>
<input type="text" name="username" id="username" />
</div>
<div>
<label for="password">密码</label>
<input type="password" name="password" id="password" />
</div>
<div>
<input type="submit" value="提交" />
</div>
</form>
</div>
</body>
</html>
后台
from flask import Flask,request,render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template('test.html')
@app.route('/test/', methods=['GET', 'POST'], endpoint='test01')
def test():
getData = request.args # 利用request对象获取GET请求数据
print('获取的GET数据为:', getData) # 打印获取到的GET数据 ImmutableMultiDict([('username', '456456'), ('password', '667788')])
postData = request.form # 利用request对象获取POST请求数据
print('获取的POST数据为:', postData) # 打印获取到的POST请求 ImmutableMultiDict([])
username = request.args.get('username') #使用args获取get请求数据
password = request.args.get('password')
print(username,password) #456456 667788
return '这是测试页面'
if __name__ == '__main__':
app.run(debug=True)
3、AJAX POST请求
前台
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax请求</title>
<script src="../static/jquery-1.10.2.min.js"></script>
</head>
<body>
ajax请求测试页面
<script>
data = {
"username": "warrior",
"password": "123321"
};
url = "/test/";
$.post(url, data);
</script>
</body>
</html>
后台
from flask import Flask,request,render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template('test.html')
@app.route('/test/', methods=['GET', 'POST'], endpoint='test01')
def test():
postData = request.form # 获取ajax的请求参数(请求方式时post)
print('post形式的ajax请求参数:', postData) # 打印获取到的参数 ImmutableMultiDict([('username', 'warrior'), ('password', '123321')])
print(request.form.get('username')) # 获取指定的参数 warrior
print(request.form.get('password')) # 获取指定的参数 123321
getData = request.args # 获取ajax的请求参数(请求方式时get)
print('get形式的ajax请求参数:', getData) get形式的ajax请求参数: ImmutableMultiDict([])
print(request.args.get('password')) None
return '这是测试ajax请求页面'
if __name__ == '__main__':
app.run(debug=True)
4、AJAX GET请求
前台
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax请求</title>
<script src="../static/jquery-1.10.2.min.js"></script>
</head>
<body>
ajax请求测试页面
<script>
data = {
"username": "warrior",
"password": "123321"
};
url = "/test/";
$.get(url, data);
</script>
</body>
</html>
后台
from flask import Flask,request,render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template('test.html')
@app.route('/test/', methods=['GET', 'POST'], endpoint='test01')
def test():
postData = request.form # 获取ajax的请求参数(请求方式时post)
print('post形式的ajax请求参数:', postData) # 打印获取到的参数 ImmutableMultiDict([])
print(request.form.get('username')) # 获取指定的参数 None
print(request.form.get('password')) # 获取指定的参数 None
getData = request.args # 获取ajax的请求参数(请求方式时get)
print('get形式的ajax请求参数:', getData) #ImmutableMultiDict([('username', 'warrior'), ('password', '123321')])
print(request.args.get('username')) #warrior
print(request.args.get('password')) #123321
return '这是测试ajax请求页面'
if __name__ == '__main__':
app.run(debug=True)
二、后台视图函数的返回值类型
1、字符串
2、元组
return (需要返回的数据, 状态码, 响应信息)
----数据必须是字符串,相应信息是字典,默认{}
return ('{"username":"yhao"}',200,{"Content-Type":"test/json"})
3、response对象
resp = Response('hello world')
resp.status_code = 200
resp.headers["Content-Type"] = "test/json"
三、补充
request
# 获取表单提交数据, 仅用于表单
request.form.get('begin', '')
# 获取POST数据
request.json
# 获取GET参数
request.args.get('q', '')
# 处理get请求
data = request.get_json(silent=False)
# 获取用户真实IP
if request.headers.getlist('X-Forwarded-For'):
ip = request.headers.getlist('X-Forwarded-For')[0]
else:
ip = request.remote_addr
网友评论