在 Flask 里,能使用多種方法獲取不同類型的請求數據,下面詳細介紹常見請求數據的獲取方式。
獲取查詢字符串參數(GET 請求)
查詢字符串參數一般在 URL 里,以 ?key1=value1&key2=value2
這種形式存在。可通過 request.args
來獲取。
from flask import Flask, requestapp = Flask(__name__)@app.route('/get_params')
def get_params():# 獲取單個參數name = request.args.get('name')age = request.args.get('age', type=int) # 指定參數類型# 獲取所有參數all_params = request.args.to_dict()return f"Name: {name}, Age: {age}, All params: {all_params}"if __name__ == '__main__':app.run(debug=True)
獲取表單數據(POST 請求)
表單數據通常由 HTML 表單提交,能通過 request.form
來獲取 form-data
和 x-www-form-urlencoded
數據。
from flask import Flask, requestapp = Flask(__name__)@app.route('/submit_form', methods=['POST'])
def submit_form():# 獲取單個表單字段username = request.form.get('username')password = request.form.get('password')# 獲取所有表單字段all_form_data = request.form.to_dict()return f"Username: {username}, Password: {password}, All form data: {all_form_data}"if __name__ == '__main__':app.run(debug=True)
獲取 JSON 數據(POST、PUT 等請求)
如果請求數據是 JSON 格式,可使用 request.get_json()
方法獲取。
from flask import Flask, requestapp = Flask(__name__)@app.route('/submit_json', methods=['POST'])
def submit_json():# 獲取 JSON 數據data = request.get_json()if data:name = data.get('name')age = data.get('age')return f"Name: {name}, Age: {age}"else:return "No valid JSON data provided", 400if __name__ == '__main__':app.run(debug=True)
獲取請求頭信息
請求頭信息可通過 request.headers
來獲取。
from flask import Flask, requestapp = Flask(__name__)@app.route('/get_headers')
def get_headers():# 獲取單個請求頭user_agent = request.headers.get('User-Agent')# 獲取所有請求頭all_headers = dict(request.headers)return f"User-Agent: {user_agent}, All headers: {all_headers}"if __name__ == '__main__':app.run(debug=True)
獲取上傳文件
文件上傳請求的數據能通過 request.files
來獲取。
from flask import Flask, requestapp = Flask(__name__)@app.route('/upload_file', methods=['POST'])
def upload_file():# 獲取上傳的文件file = request.files.get('file')if file:# 保存文件file.save('uploaded_file.txt')return "File uploaded successfully"else:return "No file provided", 400if __name__ == '__main__':app.run(debug=True)
同時獲取 URL 查詢字符串參數和表單數據
在 Flask 里, request.values
是一個特殊的 MultiDict
對象,它將 request.args
(用于獲取 URL 查詢字符串參數)和 request.form
(用于獲取表單數據)結合起來,提供了一種統一的方式來訪問 GET 和 POST 請求中的數據。
from flask import Flask, requestapp = Flask(__name__)@app.route('/mixed_data', methods=['GET', 'POST'])
def mixed_data():param1 = request.values.get('param1')param2 = request.values.get('param2')return f"Param1: {param1}, Param2: {param2}"if __name__ == '__main__':app.run(debug=True)
request.values
會優先獲取表單數據,如果表單數據和查詢字符串參數有同名的鍵,會返回表單數據的值。- 對于 JSON 數據和文件上傳數據,
request.values
無法獲取,需要使用request.get_json()
和request.files
來處理。
參考鏈接
https://dormousehole.readthedocs.io/en/latest/api.html#flask.Request.args