使用Flask獲取請(qǐng)求參數(shù)的方式總結(jié)
在 Flask 中,可以從 request 對(duì)象中獲取各種類型的參數(shù)。以下是全面整理的獲取參數(shù)的方式及示例代碼。
1. 獲取 URL 查詢參數(shù)(Query String Parameters)
URL 中的查詢參數(shù)通過(guò) ?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í),可以通過(guò) 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í),可以通過(guò) 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ù)是通過(guò) 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
通過(guò) 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è)試:訪問(wèn)任意 URL
8. 獲取 Cookies
通過(guò) 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 并訪問(wèn)
9. 獲取 Method 類型
通過(guò) 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 方法訪問(wèn)
10. 獲取完整的 URL
通過(guò) request.url 獲取完整的請(qǐng)求 URL。
示例:
@app.route('/url') def get_full_url(): return f"Full URL: {request.url}" # 測(cè)試:訪問(wèn)任意 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技巧之實(shí)現(xiàn)批量統(tǒng)一圖片格式和尺寸
大家在工作的時(shí)候基本都會(huì)接觸到很多的圖片,有時(shí)為了不同的工作需求需要修改圖片的尺寸或者大小。本文為大家整理了Python批量轉(zhuǎn)換圖片格式和統(tǒng)一圖片尺寸,希望對(duì)大家有所幫助2023-05-05python計(jì)算Content-MD5并獲取文件的Content-MD5值方式
這篇文章主要介紹了python計(jì)算Content-MD5并獲取文件的Content-MD5值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04pandas 數(shù)據(jù)索引與選取的實(shí)現(xiàn)方法
這篇文章主要介紹了pandas 數(shù)據(jù)索引與選取的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06Python數(shù)據(jù)類型之Set集合實(shí)例詳解
這篇文章主要介紹了Python數(shù)據(jù)類型之Set集合,結(jié)合實(shí)例形式詳細(xì)分析了Python數(shù)據(jù)類型中集合的概念、原理、創(chuàng)建、遍歷、交集、并集等相關(guān)操作技巧,需要的朋友可以參考下2019-05-05jupyter 使用Pillow包顯示圖像時(shí)inline顯示方式
這篇文章主要介紹了jupyter 使用Pillow包顯示圖像時(shí)inline顯示方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Python列表list數(shù)組array用法實(shí)例解析
這篇文章主要介紹了Python列表list數(shù)組array用法,實(shí)例解析了關(guān)于數(shù)組的各種常見(jiàn)操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10nginx黑名單和django限速,最簡(jiǎn)單的防惡意請(qǐng)求方法分享
今天小編就為大家分享一篇nginx黑名單和django限速,最簡(jiǎn)單的防惡意請(qǐng)求方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08