Flask請(qǐng)求參數(shù)獲取常用方式詳解
一、參數(shù)獲取方式全景圖
先來(lái)看一個(gè)總覽表格,對(duì)比三種主要獲取方式:
獲取方式 | 適用場(chǎng)景 | 示例URL | 代碼示例 |
---|---|---|---|
路由參數(shù) <int:aid> | URL路徑中的變量部分 | /detail/123 | def detail(aid): |
request.args | URL查詢字符串(?后面的鍵值對(duì)) | /publish?title=hello | request.args.get('title') |
request.form | POST表單提交的數(shù)據(jù) | 表單提交(無(wú)直接URL體現(xiàn)) | request.form.get('title') |
二、詳細(xì)解析每種方式
1. 路由參數(shù):URL路徑中的變量
@app.route('/detail/<int:aid>') def detail(aid): return f"文章ID是: {aid}"
識(shí)別特征:URL路徑中用< >包裹的部分
獲取方式:直接作為函數(shù)參數(shù)
示例:
- 訪問(wèn)URL: /detail/42
- 結(jié)果: aid自動(dòng)獲取值`42
2. URL查詢參數(shù)(request.args):?jiǎn)柼?hào)后的鍵值對(duì)
@app.route('/search') def search(): keyword = request.args.get('q') return f"搜索關(guān)鍵詞: {keyword}"
識(shí)別特征:URL中?后面的部分,形如key=value,多個(gè)參數(shù)用&連接
獲取方式:request.args.get('key')
示例:
訪問(wèn)URL: /search?q=flask&page=2
獲取:
- q: “flask”
- page: “2”
/search?q=flask&page=2 ↑ ↑ | request.args.get('page') → "2" request.args.get('q') → "flask"
3. 表單數(shù)據(jù)(request.form):POST請(qǐng)求體
@app.route('/login', methods=['POST']) def login(): username = request.form.get('username') password = request.form.get('password') return f"用戶{username}登錄中..."
識(shí)別特征:通過(guò)<form>表單提交的數(shù)據(jù)
獲取方式:request.form.get('field_name')
示例表單:
<form action="/login" method="post"> <input type="text" name="username"> <input type="password" name="password"> <button>提交</button> </form>
表單提交 → 請(qǐng)求體:
username=admin&password=123456
↓
request.form.get('username') → "admin"
request.form.get('password') → "123456"
三、常見混淆場(chǎng)景解析
混淆1:把路由參數(shù)當(dāng)成查詢參數(shù)獲取
錯(cuò)誤做法:
@app.route('/detail/<int:aid>') def detail(): aid = request.args.get('aid') # 這樣獲取不到!
正確做法:
@app.route('/detail/<int:aid>') def detail(aid): # 直接從參數(shù)獲取 return str(aid)
混淆2:用request.form獲取GET參數(shù)
錯(cuò)誤做法:
# 訪問(wèn)URL: /api?user=john user = request.form.get('user') # 返回None
正確做法:
user = request.args.get('user') # 返回"john"
混淆3:用request.args獲取POST表單數(shù)據(jù)
錯(cuò)誤做法:
# 提交了一個(gè)登錄表單 username = request.args.get('username') # 返回None
正確做法:
username = request.form.get('username')
四、記憶技巧
1.看URL結(jié)構(gòu):
- /path/<variable> → 路由參數(shù) → 函數(shù)參數(shù)獲取
- /path?key=value → 查詢參數(shù) → request.args
- 表單提交 → request.form
2.HTTP方法聯(lián)想:
- GET請(qǐng)求的參數(shù)通常在URL中 → request.args
- POST請(qǐng)求的參數(shù)通常在請(qǐng)求體中 → request.form
3.開發(fā)時(shí)的小技巧:
print(request.args) # 查看所有查詢參數(shù) print(request.form) # 查看所有表單數(shù)據(jù)
五、綜合示例
from flask import Flask, request app = Flask(__name__) # 路由參數(shù) + 查詢參數(shù) @app.route('/user/<int:user_id>') def user_profile(user_id): action = request.args.get('action', 'view') # 帶默認(rèn)值 return f"用戶{user_id}的個(gè)人資料,操作: {action}" # 表單處理 @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': username = request.form.get('username') email = request.form.get('email') return f"注冊(cè)成功: {username} ({email})" return ''' <form method="post"> 用戶名: <input name="username"><br> 郵箱: <input name="email"><br> <button>注冊(cè)</button> </form> '''
記?。河^察URL結(jié)構(gòu)是第一步,然后根據(jù)參數(shù)所在位置選擇正確的獲取方法。
到此這篇關(guān)于Flask請(qǐng)求參數(shù)獲取常用方式詳解的文章就介紹到這了,更多相關(guān)Flask獲取請(qǐng)求參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中random.shuffle()函數(shù)用法代碼案例
random.shuffle方法,對(duì)元素進(jìn)行重新排序,打亂原有的順序,返回一個(gè)隨機(jī)序列,該方法的作用類似洗牌,本文重點(diǎn)給大家介紹Python中random.shuffle()函數(shù)用法代碼案例,感興趣的朋友跟隨小編一起看看吧2022-11-11Django中URL視圖函數(shù)的一些高級(jí)概念介紹
這篇文章主要介紹了Django中URL視圖函數(shù)的一些高級(jí)概念,Django是Python重多人氣框架中最為著名的一個(gè),需要的朋友可以參考下2015-07-07Python基礎(chǔ)之變量的相關(guān)知識(shí)總結(jié)
今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著Python變量展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06Django基礎(chǔ)知識(shí) URL路由系統(tǒng)詳解
這篇文章主要介紹了Django基礎(chǔ)知識(shí) URL路由系統(tǒng)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07Python自動(dòng)創(chuàng)建Markdown表格使用實(shí)例探究
Markdown表格是文檔中整理和展示數(shù)據(jù)的重要方式之一,然而,手動(dòng)編寫大型表格可能會(huì)費(fèi)時(shí)且容易出錯(cuò),本文將介紹如何使用Python自動(dòng)創(chuàng)建Markdown表格,通過(guò)示例代碼詳細(xì)展示各種場(chǎng)景下的創(chuàng)建方法,提高表格生成的效率2024-01-01