get和post請(qǐng)求:
- 從兩個(gè)方面入手get和post請(qǐng)求
-
get請(qǐng)求:
- 使用場(chǎng)景: 如果只是對(duì)服務(wù)器獲取數(shù)據(jù)蛛壳, 并沒有對(duì)服務(wù)器產(chǎn)生任何影響要销,那么這時(shí)候使用get請(qǐng)求
- 傳參: get請(qǐng)求傳參是放在url中停做,并且是通過
?
的形式來指定key和value的服协。
-
post請(qǐng)求:
- 使用場(chǎng)景:如果要對(duì)服務(wù)器產(chǎn)生影響府适,那么使用post請(qǐng)求绣张。
- 傳參: post請(qǐng)求傳參不是放在url中答渔,是通過
form data
的形式發(fā)送給服務(wù)器的。
get和post請(qǐng)求獲取參數(shù):
- get請(qǐng)求是通過
flask.request.args
來獲取侥涵。 - post請(qǐng)求是通過
flask.request.form
來獲取沼撕。 - post請(qǐng)求在模板中要注意幾點(diǎn):
- input標(biāo)簽中, 要寫那么來表示這個(gè)value的key芜飘, 方便后臺(tái)獲取务豺。
- 在寫form表單的時(shí)候, 要指定
method=post
, 并且要指定action='/login/'
- 示例代碼:
- post請(qǐng)求示例:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登錄</title>
</head>
<body>
<form action="{{ url_for('login') }}" method="post">
<table>
<tbody>
<tr>
<td>用戶名: </td>
<td><input type="text" placeholder="請(qǐng)輸入用戶名" name = 'username'></td>
</tr>
<tr>
<td>密碼: </td>
<td><input type="text" placeholder="請(qǐng)輸入密碼" name = 'password'></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="登錄"></td>
</tr>
</tbody>
</table>
</form>
</body>
</html><!DOCTYPE html>
- get請(qǐng)求示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首頁</title>
</head>
<body>
<a href="{{ url_for('search', q='hello') }}">跳轉(zhuǎn)到搜索頁面</a>
</body>
</html>
- request接口調(diào)用方式:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/index/')
def index():
return render_template('index.html')
@app.route('/search/')
def search():
# arguments
condition = request.args.get('q')
return '用戶提交的查詢參數(shù)是: {}'.format(condition)
# 默認(rèn)的試圖函數(shù)嗦明, 只能采用get請(qǐng)求
# 如果你想采用post請(qǐng)求笼沥,那么要寫明
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
username = request.form.get('username')
password = request.form.get('password')
print('username: {}, password: {}'.format(username, password))
return 'name = {}, password = {}'.format(username, password)
if __name__ == '__main__':
app.run(debug=True, host='127.0.0.1', port=8081)