当前位置: 首页 > article >正文

Flask中获取请求参数的一些方式总结

在 Flask 中,可以从 request 对象中获取各种类型的参数。以下是全面整理的获取参数的方式及示例代码。


1. 获取 URL 查询参数(Query String Parameters)

URL 中的查询参数通过 ?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)  # 获取单个参数
    param2 = request.args.getlist('param2')  # 获取多个同名参数
    return f"param1: {param1}, param2: {param2}"

# 测试 URL: http://127.0.0.1:5000/query?param1=value1&param2=value2&param2=value3

2. 获取表单数据(Form Data)

当请求方法为 POSTPUT 时,可以通过 request.form 获取表单数据。

示例:
@app.route('/form', methods=['POST'])
def get_form_data():
    name = request.form.get('name', default=None, type=str)  # 获取单个参数
    age = request.form.get('age', default=0, type=int)  # 获取并转换为整数
    return f"name: {name}, age: {age}"

# 测试:使用 Postman 或 curl 提交表单数据

3. 获取 JSON 数据

当客户端发送 JSON 格式的数据时,可以使用 request.json 获取解析后的字典。

示例:
@app.route('/json', methods=['POST'])
def get_json_data():
    data = request.json  # 获取 JSON 数据
    name = data.get('name', None)
    age = data.get('age', 0)
    return f"name: {name}, age: {age}"

# 测试:使用 Postman 或 curl 提交 JSON 数据
# 请求头:Content-Type: application/json
# 请求体:{"name": "Alice", "age": 25}

4. 获取文件上传(File Uploads)

当上传文件时,可以通过 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. 获取路径参数(Route Parameters)

路径参数是通过 URL 路径定义的动态部分,使用 <variable_name> 定义,并在函数中接收。

示例:
@app.route('/user/<username>')
def get_user(username):
    return f"Hello, {username}!"

# 测试 URL: http://127.0.0.1:5000/user/Alice

6. 获取原始请求体(Raw Body)

如果需要直接获取请求的原始内容,可以使用 request.datarequest.get_data()

示例:
@app.route('/raw', methods=['POST'])
def get_raw_data():
    raw_data = request.data.decode('utf-8')  # 获取并解码原始数据
    return f"Received raw data: {raw_data}"

# 测试:提交任意格式的原始数据

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 获取客户端发送的 Cookie。

示例:
@app.route('/cookies')
def get_cookies():
    session_id = request.cookies.get('session_id', default=None)  # 获取 Cookie
    return f"Session ID: {session_id}"

# 测试:设置 Cookie 并访问

9. 获取 Method 类型

通过 request.method 获取当前请求的方法类型(如 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

总结

方式使用场景属性/方法
查询参数URL 中的键值对request.args
表单数据HTML 表单提交request.form
JSON 数据客户端发送 JSON 格式数据request.json
文件上传文件上传request.files
路径参数动态路由中的参数函数参数
原始请求体获取未解析的请求体request.data
Headers获取请求头信息request.headers
Cookies获取客户端发送的 Cookierequest.cookies
Method 类型获取请求方法类型request.method
完整 URL获取完整的请求 URLrequest.url

以上方法涵盖了 Flask 中从 request 对象获取参数的主要方式,根据实际需求选择合适的方式即可。


http://www.kler.cn/a/548707.html

相关文章:

  • DeepSeek在linux下的安装部署与应用测试
  • 基于Python的Flask微博话题舆情分析可视化系统
  • Dify+Ollama+DeepSeek部署本地大模型+知识库搭建
  • Typescript class中的方法和函数类型的属性有何不同?
  • 每日一题——47. 全排列 II
  • Linux系统Centos安装部署nginx代理
  • 数字内容体验未来趋势:五大平台横向对比与深度解析
  • 惠普HP Color LaserJet CP1215/1210彩色打印机打印校准方法
  • . Unable to find a @SpringBootConfiguration(默认软件包中的 Spring Boot 应用程序)
  • AI大模型学习(二): LangChain(一)
  • SpringBoot+数据可视化的奶茶点单购物平台(程序+论文+讲解+安装+调试+售后)
  • GMSL 实例1:当 MAX96717 遇上 MAX96724,打通 Camera 视频数据传输
  • 运维脚本——2.备份与恢复
  • YOLO11环境搭建CUDA12.6
  • AI大模型技术基础入门
  • [NKU]C++基础课(二)--- externC、强制类型转换、类与对象、面向对象程序设计语言、对象创建和使用、类的定义、封装
  • 常用查找算法整理(顺序查找、二分查找、哈希查找、二叉排序树查找、平衡二叉树查找、红黑树查找、B树和B+树查找、分块查找)
  • TCP/UDP 简介,三次握手与四次挥手
  • 哈希-字母异位词分组
  • Vue 3 30天精进之旅:Day 23 - 性能优化