Flask HTTP方法

2022-08-16 10:38 更新

Http協(xié)議是萬維網(wǎng)中數(shù)據(jù)通信的基礎(chǔ)。在該協(xié)議中定義了從指定URL檢索數(shù)據(jù)的不同方法。

下表總結(jié)了不同的http方法:

序號 方法與描述
1

GET

以未加密的形式將數(shù)據(jù)發(fā)送到服務(wù)器。最常見的方法。

2

HEAD

和GET方法相同,但沒有響應(yīng)體。

3

POST

用于將HTML表單數(shù)據(jù)發(fā)送到服務(wù)器。POST方法接收的數(shù)據(jù)不由服務(wù)器緩存。

4

PUT

用上傳的內(nèi)容替換目標(biāo)資源的所有當(dāng)前表示。

5

DELETE

刪除由URL給出的目標(biāo)資源的所有當(dāng)前表示。

默認(rèn)情況下,F(xiàn)lask路由響應(yīng)GET請求。但是,可以通過為route()裝飾器提供方法參數(shù)來更改此首選項。

為了演示在URL路由中使用POST方法,首先讓我們創(chuàng)建一個HTML表單,并使用POST方法將表單數(shù)據(jù)發(fā)送到URL。

將以下腳本另存為login.html

<html>
   <body>
      <form action = "http://localhost: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>

現(xiàn)在在Python shell中輸入以下腳本:

from flask import Flask, redirect, url_for, request, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template("login.html")

@app.route('/success/<name>')
def success(name):
    return 'welcome %s' % name

@app.route('/login',methods = ['POST', 'GET'])
def login():
   if request.method == 'POST':
      print(1)
      user = request.form['nm']
      return redirect(url_for('success',name = user))
   else:
      print(2)
      user = request.args.get('nm')
      return redirect(url_for('success',name = user))

if __name__ == '__main__':
    app.run()

開發(fā)服務(wù)器開始運(yùn)行后,在瀏覽器中打開login.html,在文本字段中輸入name,然后單擊提交

Flask HTTP方法

表單數(shù)據(jù)將POST到表單標(biāo)簽的action子句中的URL。

http://localhost/login映射到login()函數(shù)。由于服務(wù)器通過POST方法接收數(shù)據(jù),因此通過以下步驟獲得從表單數(shù)據(jù)獲得的“nm”參數(shù)的值:

user = request.form['nm']

它作為變量部分傳遞給'/success' URL。瀏覽器在窗口中顯示welcome 消息。

Flask HTTP方法

login.html中將方法參數(shù)更改為'GET',然后在瀏覽器中再次打開它。服務(wù)器上接收的數(shù)據(jù)是通過GET方法獲得的。通過以下的步驟獲得'nm'參數(shù)的值:

User = request.args.get('nm')

這里,args是包含表單參數(shù)對及其對應(yīng)值對的列表的字典對象。與'nm'參數(shù)對應(yīng)的值將像之前一樣傳遞到'/ success' URL。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號