python
flask
在flask定義app.route('你的路由')
的時候,有幾個參數可以設置,其中methods
是用來定義這個路由是否執行相關的GET
、POST
…來看看怎麼設置。
在HTTP中有八種Method,其中四種常見的Method為GET、POST、UPDATE、DELETE,這不屬flask的範疇,不會多談(因為在下也沒有足夠的能力談),我們要討論的是如何在flask中設置。
使用者端會提出一個請求稱為request
,這些資訊都可以透過瀏灠器的開發者工具看的到,大概幾種狀況:
GET
POST
UPDATE
DELETE
相對的,在flask處理這些資訊的就是request
,這是flask的自帶函數
from flask import request
假設我們要設計一個login的頁面來接收使用者的登入帳號密碼,接著回傳一個歡迎的訊息給使用者。
我們先來設置Python文件,請依個人的喜好設置檔案名稱即可
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return 'Hello ' + request.values['username']
return "<form method='post' action='/login'><input type='text' name='username' />" \
"</br>" \
"<button type='submit'>Submit</button></form>"
if __name__ == '__main__':
app.debug = True
app.run()
第5行:利用methods
來設置這個路由允許的方式,如果沒有設置POST
那使用者點擊之後會有異常訊息告知該路由不支援POST
第7行:利用request
來補捉使用者端的動作是否為POST
,如果是POST
就代表是使用者端透過submit
所提交過來的資料。
第8行:透過request.values['username']
,我們可以取得從form
過來的username
欄位資料。
第10行:注意到action='/login'
,這種寫法是不好的,未來如果我們有變更路由名稱,這邊也要跟著調整了,建議作法是使用url_for
我們直接在Python文件中硬刻簡單的HTML語法,所以不需要再另外設置HTML文件,執行專案測試。
登入畫面如下:
點擊Submit:
下圖是透過chrome去查看你的request的資料:
透過這次的討論我們瞭解到如何利用flask的自帶函數request
來補捉由Client端所傳過來的資料,以及如何去判斷是否為POST
的動作,這在表單設計上非常實用,因為我們在路由設置上會需要GET
的時候回傳空白表單,而POST
的時候將回傳資料寫入資料庫。
另外,在沒有特別設置methods
情況下預設為允許GET
,後續我們的專案較常用到的也只有GET
與POST
,我們繼續往下一步前進吧。
上一話:Flask實作_基礎_06_render_template + 參數
下一話:Flask實作_基礎_08_form action url_for