Http協定是全球資訊網資料通訊的基礎。 它協定定義了從指定URL中檢索不同資料的方法。
下表概括了不同的http方法 -
編號 | 方法 | 描述 |
---|---|---|
1 | GET | 將資料以未加密的形式傳送到伺服器,這最常用的方法。 |
2 | HEAD | 與GET相同,但沒有響應主體 |
3 | POST | 用於將HTML表單資料傳送到伺服器。通過POST方法接收的資料不會被伺服器快取。 |
4 | PUT | 用上傳的內容替換目標資源的所有當前表示。 |
5 | DELETE | 刪除由URL給出的所有目標資源的所有表示 |
預設情況下,Flask路由響應GET請求。 但是,可以通過為route()
裝飾器提供方法引數來更改此偏好設定。
為了演示在URL路由中使用POST方法,首先建立一個HTML表單並使用POST方法將表單資料傳送到URL。
將以下指令碼儲存到檔案:login.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Flask HTTP請求方法處理</title>
</head>
<body>
<form action = "http://localhost:5000/login" method = "post">
<p>輸入姓名:</p>
<p><input type = "text" name = "name" value=""/></p>
<p><input type = "submit" value = "提交" /></p>
</form>
</body>
</html>
現在在Python shell中輸入以下指令碼。
from flask import Flask, redirect, url_for, request
app = Flask(__name__)
@app.route('/success/<name>')
def success(name):
return 'welcome %s' % name
@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST':
user = request.form['name']
return redirect(url_for('success',name = user))
else:
user = request.args.get('name')
return redirect(url_for('success',name = user))
if __name__ == '__main__':
app.run(debug = True)
開發伺服器開始執行後,在瀏覽器中開啟login.html
,在文字欄位中輸入名稱(如:maxsu )並單擊提交。
表單資料被提交到<form>
標籤的action
屬性指定的URL。
http://localhost:5000/login
被對映到login()
函式。 由於伺服器已通過POST方法接收資料,因此從表單資料獲得'name'
引數的值,通過以下方式-
user = request.form['name']
它作為可變部分傳遞給URL:/success
。 瀏覽器在視窗中顯示歡迎訊息。
將login.html
中的方法引數更改為GET
並在瀏覽器中再次開啟。 在伺服器上收到的資料是通過GET方法。 'name'
引數的值現在通過以下方式獲得 -
User = request.args.get('name')
這裡,args
是字典物件,它包含一系列表單引數及其對應值。 與之前一樣,與'name'
引數對應的值將傳遞到URL:/success
。