Flask HTTP方法

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


上一篇: Flask URL構建 下一篇: Flask範本