
- Flask 教程
- Flask - 首頁
- Flask - 概述
- Flask - 環境
- Flask - 應用
- Flask - 路由
- Flask - 變數規則
- Flask - URL 構建
- Flask – HTTP 方法
- Flask - 模板
- Flask - 靜態檔案
- Flask - 請求物件
- 將表單資料傳送到模板
- Flask - Cookie
- Flask - 會話
- Flask - 重定向和錯誤
- Flask - 訊息閃現
- Flask - 檔案上傳
- Flask - 擴充套件
- Flask - 郵件
- Flask - WTF
- Flask - SQLite
- Flask - SQLAlchemy
- Flask - Sijax
- Flask - 部署
- Flask - FastCGI
- Flask 有用資源
- Flask - 快速指南
- Flask - 有用資源
- Flask - 討論
Flask – HTTP 方法
HTTP 協議是全球資訊網資料通訊的基礎。此協議定義了從指定 URL 檢索資料的不同方法。
下表總結了不同的 HTTP 方法:
序號 | 方法和描述 |
---|---|
1 |
GET 以未加密的形式向伺服器傳送資料。最常用的方法。 |
2 |
HEAD 與 GET 相同,但沒有響應正文 |
3 |
POST 用於將 HTML 表單資料傳送到伺服器。POST 方法接收到的資料不會被伺服器快取。 |
4 |
PUT 用上傳的內容替換目標資源的所有當前表示。 |
5 |
DELETE 刪除 URL 指定的目標資源的所有當前表示 |
預設情況下,Flask 路由響應 **GET** 請求。但是,可以透過向 **route()** 裝飾器提供 methods 引數來更改此首選項。
為了演示在 URL 路由中使用 **POST** 方法,讓我們首先建立一個 HTML 表單,並使用 **POST** 方法將表單資料傳送到 URL。
將以下指令碼儲存為 login.html
<html> <body> <form action = "https://:5000/login" method = "post"> <p>Enter Name:</p> <p><input type = "text" name = "nm" /></p> <p><input type = "submit" value = "submit" /></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['nm'] return redirect(url_for('success',name = user)) else: user = request.args.get('nm') return redirect(url_for('success',name = user)) if __name__ == '__main__': app.run(debug = True)
開發伺服器啟動並執行後,在瀏覽器中開啟 **login.html**,在文字欄位中輸入名稱,然後單擊 **提交**。

表單資料透過表單標籤的 action 子句中的 POST 方法傳送到 URL。
**https:///login** 對映到 **login()** 函式。由於伺服器已透過 **POST** 方法接收資料,因此從表單資料中獲得的 'nm' 引數的值透過以下方式獲得:
user = request.form['nm']
它作為變數部分傳遞到 **‘/success’** URL。瀏覽器在視窗中顯示 **歡迎** 訊息。

在 **login.html** 中將 method 引數更改為 **‘GET’**,然後在瀏覽器中再次開啟它。伺服器接收到的資料是透過 **GET** 方法。現在透過以下方式獲得 'nm' 引數的值:
User = request.args.get(‘nm’)
這裡,**args** 是一個字典物件,包含表單引數及其對應值的列表。與 'nm' 引數對應的值像之前一樣傳遞到 'success' URL。