使用Flask獲取請求參數(shù)的方式總結(jié)
在 Flask 中,可以從 request 對象中獲取各種類型的參數(shù)。以下是全面整理的獲取參數(shù)的方式及示例代碼。
1. 獲取 URL 查詢參數(shù)(Query String Parameters)
URL 中的查詢參數(shù)通過 ?key=value&key2=value2 的形式傳遞,使用 request.args 獲取。
示例:
from flask import Flask, request
app = Flask(__name__)
@app.route('/query')
def get_query_params():
param1 = request.args.get('param1', default=None, type=str) # 獲取單個參數(shù)
param2 = request.args.getlist('param2') # 獲取多個同名參數(shù)
return f"param1: {param1}, param2: {param2}"
# 測試 URL: http://127.0.0.1:5000/query?param1=value1¶m2=value2¶m2=value3
2. 獲取表單數(shù)據(jù)(Form Data)
當(dāng)請求方法為 POST 或 PUT 時,可以通過 request.form 獲取表單數(shù)據(jù)。
示例:
@app.route('/form', methods=['POST'])
def get_form_data():
name = request.form.get('name', default=None, type=str) # 獲取單個參數(shù)
age = request.form.get('age', default=0, type=int) # 獲取并轉(zhuǎn)換為整數(shù)
return f"name: {name}, age: {age}"
# 測試:使用 Postman 或 curl 提交表單數(shù)據(jù)
3. 獲取 JSON 數(shù)據(jù)
當(dāng)客戶端發(fā)送 JSON 格式的數(shù)據(jù)時,可以使用 request.json 獲取解析后的字典。
示例:
@app.route('/json', methods=['POST'])
def get_json_data():
data = request.json # 獲取 JSON 數(shù)據(jù)
name = data.get('name', None)
age = data.get('age', 0)
return f"name: {name}, age: {age}"
# 測試:使用 Postman 或 curl 提交 JSON 數(shù)據(jù)
# 請求頭:Content-Type: application/json
# 請求體:{"name": "Alice", "age": 25}
4. 獲取文件上傳(File Uploads)
當(dāng)上傳文件時,可以通過 request.files 獲取文件對象。
示例:
@app.route('/upload', methods=['POST'])
def upload_file():
file = request.files.get('file') # 獲取上傳的文件
if file:
filename = file.filename
file.save(f"./{filename}") # 保存文件到本地
return f"File uploaded: {filename}"
return "No file uploaded"
# 測試:使用 Postman 或 curl 提交文件
5. 獲取路徑參數(shù)(Route Parameters)
路徑參數(shù)是通過 URL 路徑定義的動態(tài)部分,使用 <variable_name> 定義,并在函數(shù)中接收。
示例:
@app.route('/user/<username>')
def get_user(username):
return f"Hello, {username}!"
# 測試 URL: http://127.0.0.1:5000/user/Alice
6. 獲取原始請求體(Raw Body)
如果需要直接獲取請求的原始內(nèi)容,可以使用 request.data 或 request.get_data()。
示例:
@app.route('/raw', methods=['POST'])
def get_raw_data():
raw_data = request.data.decode('utf-8') # 獲取并解碼原始數(shù)據(jù)
return f"Received raw data: {raw_data}"
# 測試:提交任意格式的原始數(shù)據(jù)
7. 獲取 Headers
通過 request.headers 獲取請求頭信息。
示例:
@app.route('/headers')
def get_headers():
user_agent = request.headers.get('User-Agent') # 獲取 User-Agent
host = request.headers.get('Host') # 獲取 Host
return f"User-Agent: {user_agent}, Host: {host}"
# 測試:訪問任意 URL
8. 獲取 Cookies
通過 request.cookies 獲取客戶端發(fā)送的 Cookie。
示例:
@app.route('/cookies')
def get_cookies():
session_id = request.cookies.get('session_id', default=None) # 獲取 Cookie
return f"Session ID: {session_id}"
# 測試:設(shè)置 Cookie 并訪問
9. 獲取 Method 類型
通過 request.method 獲取當(dāng)前請求的方法類型(如 GET, POST 等)。
示例:
@app.route('/method', methods=['GET', 'POST'])
def get_method():
return f"Request method: {request.method}"
# 測試:分別用 GET 和 POST 方法訪問
10. 獲取完整的 URL
通過 request.url 獲取完整的請求 URL。
示例:
@app.route('/url')
def get_full_url():
return f"Full URL: {request.url}"
# 測試:訪問任意 URL
總結(jié)
| 方式 | 使用場景 | 屬性/方法 |
|---|---|---|
| 查詢參數(shù) | URL 中的鍵值對 | request.args |
| 表單數(shù)據(jù) | HTML 表單提交 | request.form |
| JSON 數(shù)據(jù) | 客戶端發(fā)送 JSON 格式數(shù)據(jù) | request.json |
| 文件上傳 | 文件上傳 | request.files |
| 路徑參數(shù) | 動態(tài)路由中的參數(shù) | 函數(shù)參數(shù) |
| 原始請求體 | 獲取未解析的請求體 | request.data |
| Headers | 獲取請求頭信息 | request.headers |
| Cookies | 獲取客戶端發(fā)送的 Cookie | request.cookies |
| Method 類型 | 獲取請求方法類型 | request.method |
| 完整 URL | 獲取完整的請求 URL | request.url |
以上方法涵蓋了 Flask 中從 request 對象獲取參數(shù)的主要方式,根據(jù)實際需求選擇合適的方式即可。
到此這篇關(guān)于使用Flask獲取請求參數(shù)的方式總結(jié)的文章就介紹到這了,更多相關(guān)Flask獲取請求參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python技巧之實現(xiàn)批量統(tǒng)一圖片格式和尺寸
大家在工作的時候基本都會接觸到很多的圖片,有時為了不同的工作需求需要修改圖片的尺寸或者大小。本文為大家整理了Python批量轉(zhuǎn)換圖片格式和統(tǒng)一圖片尺寸,希望對大家有所幫助2023-05-05
python計算Content-MD5并獲取文件的Content-MD5值方式
這篇文章主要介紹了python計算Content-MD5并獲取文件的Content-MD5值方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
pandas 數(shù)據(jù)索引與選取的實現(xiàn)方法
這篇文章主要介紹了pandas 數(shù)據(jù)索引與選取的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
jupyter 使用Pillow包顯示圖像時inline顯示方式
這篇文章主要介紹了jupyter 使用Pillow包顯示圖像時inline顯示方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python列表list數(shù)組array用法實例解析
這篇文章主要介紹了Python列表list數(shù)組array用法,實例解析了關(guān)于數(shù)組的各種常見操作,非常具有實用價值,需要的朋友可以參考下2014-10-10
nginx黑名單和django限速,最簡單的防惡意請求方法分享
今天小編就為大家分享一篇nginx黑名單和django限速,最簡單的防惡意請求方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08

