一、前言
參考 https://www.cnblogs.com/poloyy/p/14995215.html
1、Flask 中很重要的 request 對象
- 瀏覽器訪問服務端時,向服務端發送請求
- Flask 程序使用 request 對象描述請求信息
- 當你想獲取請求體、請求參數、請求頭數據的時候,就需要靠 request 對象了
2、真實使用場景
瀏覽器訪問服務端,需要將相應的數據發送給服務端,可能有如下場景:
- 通過 URL 參數進行查詢,瀏覽器需要將查詢參數發送給服務端
- 提交表單 form 進行查詢,瀏覽器需要將表單 form 中的字段發送給服務端
- 上傳文件,瀏覽器需要將文件發送給服務端
- 通過 JSON 格式的請求體進行請求,一般是 post 請求
服務端收到將客戶端發送的數據後,封裝形成一個請求對象,在 Flask 中,請求對象是一個模塊變量 flask.request
form、args、values、json 都是獲取 http 請求的請求數據的屬性,只不過請求體類型不同
二、獲取url請求參數的例子
1、完整代碼
from flask import Flask, request app = Flask(__name__) @app.route('/query') def query(): return {"name":request.args['name'],"age":request.args['age']} @app.route('/query2') def query2(): print('args=',request.args) print('form=',request.form) return 'form' @app.route('/query3') def query3(): print('args=',request.args) print('json=',request.json) return 'json' @app.route('/query4') def query4(): return {"name":request.values['name'],"age":request.values['age']} if __name__ == '__main__': app.run(debug = True)
2、請求結果
1)/query
query後面可以隨意拼接任何參數,代碼中只寫了獲取返回參數=name和age的值
2)/query2
用 form 屬性的話得到是一個空字典哦,控制檯輸出結果如下:
3)/query3
用 json 屬性的話得到是一個 None 哦,所以無論如何都不要用 json 獲取 url 請求參數喲!控制檯輸出結果如下:
4)/query4
可以看到 values 屬性也能拿到 url 請求參數哦
三、獲取表單參數的例子
1、完整代碼
from flask import Flask, request app = Flask(__name__) @app.route('/addUser',methods=['POST']) def check_login(): return {"name:":request.form['name'],"age":request.form['age']} @app.route('/addUser2',methods=['POST']) def check_login2(): print('form=',request.form) print('args=',request.args) return "form" @app.route('/addUser3',methods=['POST']) def check_login3(): print('form=',request.form) print('json=',request.json) return "json" @app.route('/addUser4',methods=['POST']) def check_login4(): return {"name":request.values['name'],"age":request.values['age']} if __name__ == '__main__': app.run(debug = True)
2、請求結果
1)addUser
2)addUser2
用 args 屬性的話得到是一個空字典哦,控制輸出結果如下:
3)addUser3
用 json 屬性的話得到是一個 None 哦,所以無論如何都不要用 json 獲取 form-data 喲!控制檯輸出結果如下:
4)addUser4
可以看到 values 屬性也能拿到 form 表單提交的數據哦
四、獲取json數據的例子
1、完整代碼
from flask import Flask, request app = Flask(__name__) @app.route('/addJson',methods=['POST']) def check_login(): return {"name:":request.json['name'],"age":request.json['age']} @app.route('/addJson2',methods=['POST']) def check_login2(): print('json=',request.json) print('args=',request.args) return "json" @app.route('/addJson3',methods=['POST']) def check_login3(): print('json=',request.josn) print('form=',request.form) return "json" @app.route('/addJson4',methods=['POST']) def check_login4(): print('json=',request.json,type(request.json)) print('values=',request.values) return {"name":request.json['name'],"age":request.json['age']} if __name__ == '__main__': app.run(debug = True)
2、請求結果
1)addJson
2)addJson2
用 args 屬性的話得到是一個空字典哦 ,控制檯輸出結果如下:
3)addJson3
用 form 屬性的話得到是一個空字典哦 ,控制檯輸出結果如下:
4)addJson4
當你的請求體是 Json 時,是不能通過 values 來獲取請求數據哦!!request.json 拿到的就是 Json 格式的請求體,並且自動轉換成字典了哦!控制檯輸出結果如下: