使用Flask獲取請(qǐng)求參數(shù)的方式總結(jié)
在 Flask 中,可以從 request 對(duì)象中獲取各種類型的參數(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) # 獲取單個(gè)參數(shù)
param2 = request.args.getlist('param2') # 獲取多個(gè)同名參數(shù)
return f"param1: {param1}, param2: {param2}"
# 測(cè)試 URL: http://127.0.0.1:5000/query?param1=value1¶m2=value2¶m2=value3
2. 獲取表單數(shù)據(jù)(Form Data)
當(dāng)請(qǐng)求方法為 POST 或 PUT 時(shí),可以通過 request.form 獲取表單數(shù)據(jù)。
示例:
@app.route('/form', methods=['POST'])
def get_form_data():
name = request.form.get('name', default=None, type=str) # 獲取單個(gè)參數(shù)
age = request.form.get('age', default=0, type=int) # 獲取并轉(zhuǎn)換為整數(shù)
return f"name: {name}, age: {age}"
# 測(cè)試:使用 Postman 或 curl 提交表單數(shù)據(jù)
3. 獲取 JSON 數(shù)據(jù)
當(dāng)客戶端發(fā)送 JSON 格式的數(shù)據(jù)時(shí),可以使用 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}"
# 測(cè)試:使用 Postman 或 curl 提交 JSON 數(shù)據(jù)
# 請(qǐng)求頭:Content-Type: application/json
# 請(qǐng)求體:{"name": "Alice", "age": 25}
4. 獲取文件上傳(File Uploads)
當(dāng)上傳文件時(shí),可以通過 request.files 獲取文件對(duì)象。
示例:
@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"
# 測(cè)試:使用 Postman 或 curl 提交文件
5. 獲取路徑參數(shù)(Route Parameters)
路徑參數(shù)是通過 URL 路徑定義的動(dòng)態(tài)部分,使用 <variable_name> 定義,并在函數(shù)中接收。
示例:
@app.route('/user/<username>')
def get_user(username):
return f"Hello, {username}!"
# 測(cè)試 URL: http://127.0.0.1:5000/user/Alice
6. 獲取原始請(qǐng)求體(Raw Body)
如果需要直接獲取請(qǐng)求的原始內(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}"
# 測(cè)試:提交任意格式的原始數(shù)據(jù)
7. 獲取 Headers
通過 request.headers 獲取請(qǐng)求頭信息。
示例:
@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}"
# 測(cè)試:訪問任意 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}"
# 測(cè)試:設(shè)置 Cookie 并訪問
9. 獲取 Method 類型
通過 request.method 獲取當(dāng)前請(qǐng)求的方法類型(如 GET, POST 等)。
示例:
@app.route('/method', methods=['GET', 'POST'])
def get_method():
return f"Request method: {request.method}"
# 測(cè)試:分別用 GET 和 POST 方法訪問
10. 獲取完整的 URL
通過 request.url 獲取完整的請(qǐng)求 URL。
示例:
@app.route('/url')
def get_full_url():
return f"Full URL: {request.url}"
# 測(cè)試:訪問任意 URL
總結(jié)
| 方式 | 使用場(chǎng)景 | 屬性/方法 |
|---|---|---|
| 查詢參數(shù) | URL 中的鍵值對(duì) | request.args |
| 表單數(shù)據(jù) | HTML 表單提交 | request.form |
| JSON 數(shù)據(jù) | 客戶端發(fā)送 JSON 格式數(shù)據(jù) | request.json |
| 文件上傳 | 文件上傳 | request.files |
| 路徑參數(shù) | 動(dòng)態(tài)路由中的參數(shù) | 函數(shù)參數(shù) |
| 原始請(qǐng)求體 | 獲取未解析的請(qǐng)求體 | request.data |
| Headers | 獲取請(qǐng)求頭信息 | request.headers |
| Cookies | 獲取客戶端發(fā)送的 Cookie | request.cookies |
| Method 類型 | 獲取請(qǐng)求方法類型 | request.method |
| 完整 URL | 獲取完整的請(qǐng)求 URL | request.url |
以上方法涵蓋了 Flask 中從 request 對(duì)象獲取參數(shù)的主要方式,根據(jù)實(shí)際需求選擇合適的方式即可。
到此這篇關(guān)于使用Flask獲取請(qǐng)求參數(shù)的方式總結(jié)的文章就介紹到這了,更多相關(guān)Flask獲取請(qǐng)求參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
提升Python項(xiàng)目整潔度使用import?linter實(shí)例探究
在復(fù)雜的Python項(xiàng)目中,良好的代碼組織結(jié)構(gòu)是維護(hù)性和可讀性的關(guān)鍵,本文將深入研究?import-linter?工具,它是一個(gè)強(qiáng)大的靜態(tài)分析工具,旨在優(yōu)化項(xiàng)目的模塊導(dǎo)入,提高代碼質(zhì)量和可維護(hù)性2024-01-01
python 獲取一個(gè)值在某個(gè)區(qū)間的指定倍數(shù)的值方法
今天小編就為大家分享一篇python 獲取一個(gè)值在某個(gè)區(qū)間的指定倍數(shù)的值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11
python3編寫ThinkPHP命令執(zhí)行Getshell的方法
這篇文章主要介紹了python3編寫ThinkPHP命令執(zhí)行Getshell的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
pycharm 實(shí)現(xiàn)光標(biāo)快速移動(dòng)到括號(hào)外或行尾的操作
這篇文章主要介紹了pycharm 實(shí)現(xiàn)光標(biāo)快速移動(dòng)到括號(hào)外或行尾的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02
pytorch 把MNIST數(shù)據(jù)集轉(zhuǎn)換成圖片和txt的方法
這篇文章主要介紹了pytorch 把MNIST數(shù)據(jù)集轉(zhuǎn)換成圖片和txt的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05
python虛擬環(huán)境virtualenv的安裝與使用
virtualenv用于創(chuàng)建獨(dú)立的Python環(huán)境,多個(gè)Python相互獨(dú)立,互不影響,它能夠:1. 在沒有權(quán)限的情況下安裝新套件 2. 不同應(yīng)用可以使用不同的套件版本 3. 套件升級(jí)不影響其他應(yīng)用2017-09-09
python超詳細(xì)實(shí)現(xiàn)完整學(xué)生成績(jī)管理系統(tǒng)
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)完整版學(xué)生成績(jī)管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2022-03-03

