Flask 使用 request 處理GET POST請求、上傳文件


在Django框架開發中,request對象就是用來處理GET\POST請求的關鍵對象,而Flask框架也是一樣的。

下面來看看request對象的常用方法。

request對象的常用方法

request對象的導入:

from flask import request

Flask 框架中的 request 對象保存了一次HTTP請求的一切信息。那么這個HTTP請求中可能會是GET\POST請求,以及還要考慮如何獲取各種請求體或者URL參數。

而對應着這些參數的獲取或者GET/POST方法的區分,下面都有對應的常用方法來進行對應的處理。

常用的方法如下:

  • 如果是json格式的請求數據,則是采用request.data來獲取請求體的字符串。
  • 如果是form表單的請求體,那么則可以使用request.form來獲取參數。
  • 如果是url參數,例如:url?param1=xx&param2=xx,那么則可以使用request.args來獲取參數。
  • 如果需要區分GET\POST請求方法,則可以使用request.method來進行判斷區分。
  • 如果需要接收上傳的文件,則可以使用request.files來獲取上傳的文件信息。

下面來看看示例方法。

Json請求: 使用 request.data 獲取請求體

處理視圖函數如下:

from flask import Flask, current_app, redirect, url_for, request import json # 實例化app app = Flask(import_name=__name__) # 通過methods設置POST請求 @app.route('/json', methods=["POST"]) def json_request(): # 接收處理json數據請求 data = json.loads(request.data) # 將json字符串轉為dict user_name = data['user_name'] user_age = data['user_age'] return "user_name = %s, user_age = %s" % (user_name,user_age) if __name__ == '__main__': app.run(debug=True)

使用postman模擬請求如下:

form表單請求:request.form 獲取請求參數

在flask中獲取這個form的請求參數示例如下:

from flask import Flask, current_app, redirect, url_for, request # 實例化app app = Flask(import_name=__name__) # 通過methods設置POST請求 @app.route('/form', methods=["POST"]) def form_request(): # 接收post請求的form表單參數 user_name = request.form.get('user_name') user_age = request.form.get('user_age') return "user_name = %s, user_age = %s" % (user_name,user_age) if __name__ == '__main__': app.run(debug=True)

一般form表單的請求都是使用post請求,下面可以使用postman來進行請求模擬,如下:

還有 form x-www-form-urlencoded 請求,如下:

上面form-data是可以包含文件類型的form表單,而x-www-form-urlencoded只是單純 key - value的數據。

而處理的業務代碼是跟上面的一樣的。

form 表單請求中存在同一個參數名多個值的情況

這種請求下可以使用request.form.getlist() 來獲取同名多個參數,如下:

# 通過methods設置POST請求
@app.route('/form', methods=["POST"]) def form_request(): # 接收post請求的form表單參數 user_name = request.form.get('user_name') user_age = request.form.get('user_age') user_name_list = request.form.getlist('user_name') print(user_name_list) return "user_name = %s, user_age = %s, user_name_list = %s" % (user_name,user_age, user_name_list)

使用postman請求如下:

URL請求參數: request.args

在對於url上的?user_name=libai&user_age=17 該類的參數,則是使用request.args來獲取。 示例代碼如下:

# 通過methods設置GET請求
@app.route('/args', methods=["GET"]) def args_request(): # 接收處理GET數據請求 user_name = request.args.get('user_name') user_age = request.args.get('user_age') print("user_name = %s, user_age = %s" % (user_name,user_age)) return "user_name = %s, user_age = %s" % (user_name,user_age)

使用postman模擬GET請求如下:

上傳文件請求:request.files

from flask import Flask, request # 實例化app app = Flask(import_name=__name__) # 通過methods設置POST請求 @app.route('/upload_file', methods=["POST"]) def upload_file(): # 接收post請求上傳的文件 file = request.files.get('file') if file is None: # 表示沒有發送文件 return "未上傳文件" # 直接使用上傳的文件對象保存 file.save("file.jpg") return "上傳文件成功!" if __name__ == '__main__': app.run(debug=True)

使用postman上傳文件如下:

 

[Flask 使用 request 處理GET POST請求、上傳文件 - 雲+社區 - 騰訊雲](https://cloud.tencent.com/developer/article/1539199 )]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM