6. 獲取 POST 數(shù)據(jù)
Python Flask 建站框架入門課程 / 6. 獲取 POST 數(shù)據(jù)
手機(jī)也能上課
App下載
1/6

獲取POST方法傳送的數(shù)據(jù)

作為一種HTTP請(qǐng)求方法,POST用于向指定的資源提交要被處理的數(shù)據(jù)。

比如: 我們?cè)谀尘W(wǎng)站注冊(cè)用戶、寫文章等時(shí)候,需要將數(shù)據(jù)傳遞到網(wǎng)站服務(wù)器中。并不適合將數(shù)據(jù)放到URL參數(shù)中,密碼放到URL參數(shù)中容易被看到,文章數(shù)據(jù)又太多,瀏覽器不一定支持太長(zhǎng)長(zhǎng)度的URL。這時(shí),一般使用POST方法。

本課程使用python的requests庫(kù)模擬瀏覽器。

安裝方法:

pip install requests

看POST數(shù)據(jù)內(nèi)容

以用戶注冊(cè)為例子,我們需要向服務(wù)器/register傳送用戶名name和密碼password。如下編寫server.py。

from flask import Flask, request
 
app = Flask(__name__)

@app.route('/register', methods=['POST'])
def register():
    print(request.headers)
    print(request.stream.read())
    return 'welcome'
 
 
if __name__ == '__main__':
    app.run(port=5000, debug=True)

?@app.route('/register', methods=['POST'])?是指url?/register?只接受POST方法??梢愿鶕?jù)需要修改methods參數(shù),例如如果想要讓它同時(shí)支持GET和POST,這樣寫:

@app.route('/register', methods=['GET', 'POST']) 

瀏覽器模擬工具client.py內(nèi)容如下:

import requests
 
user_info = {'name': 'Loen', 'password': 'loveyou'}
r = requests.post("http://127.0.0.1:5000/register", data=user_info)
 
print(r.text)

運(yùn)行server.py,然后運(yùn)行client.py。client.py將輸出:

welcome

而server.py在終端中輸出以下調(diào)試信息(通過print輸出):

f0_run3

前6行是client.py生成的HTTP請(qǐng)求頭,由print(request.headers)輸出。

請(qǐng)求體的數(shù)據(jù),我們通過print(request.stream.read())輸出,結(jié)果是:

b'name=Loen&password=loveyou'


+10 經(jīng)驗(yàn) +10積分
解析
提示
參考答案
+10 經(jīng)驗(yàn) +10積分
視頻播放結(jié)束,是否學(xué)習(xí)下一節(jié)?