get请求和post请求:
-
get请求:
- 使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用get请求。
- 传参:get请求传参是放在URL中,并且是通过
?
的形式来指定key和value的
-
post请求:
- 使用场景:如果需要对服务器产生影响,那么使用post请求
- 传参:post请求传参不是放在url中,是通过
from data
的形式发送给服务起的
get和post请求获取参数
- get请求是通过
flask.request.args
来获取 - post请求是通过
flask.request.form
来获取 - post请求在模板中需要注意几点:
- input标签中,要写name来标识这个value的key,方便后台获取
- 在写form表单的时候,要指定
method=POST
,并且要指定action='/login/'
示例代码:
1.主app文件
#get_post_demo.py
from flask import Flask,render_template,request
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/search/')
def search():
q = request.args.get('q')
return '用户提交的查询关键字参数是:%s' %q
# 默认的视图函数,只能采取get请求
# 如果想采用post请求,那么要写明
@app.route('/login/', methods = ['GET','POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
#else:
elif request.method == 'POST':
username = request.form.get('username')
password = request.form.get('password')
print('username:' % username)
print('password:' % password)
return 'post request'
if __name__ == '__main__':
app.run(debug=True)
模板
<!--templates/login.html-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=<device-width>, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Title</title>
</head>
<body>
<form action="{{ url_for('login') }}" method="POST"></form>
<table>
<tbody>
<tr>
<td>用户名:</td>
<td><input type="text" placeholder="请输入用户名" name = 'username'></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="text" placeholder="请输入秘密" name = 'password'></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="登录"></td>
</tr>
</tbody>
</table>
</body>
</html>
<!--templates/index.html-->
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<a href="{{ url_for('search',q='Hello') }}">跳转到搜索页面</a>
</body>
</html>
网友评论