flask参数

flask参数
上午8:39
 
在 Flask 中,获取前端传来的参数主要依赖 Flask 核心对象 request。针对不同的请求方式(GET、POST)以及数据格式(表单、JSON、URL 路径),Flask 提供了不同的获取手段。
以下是 Flask 获取参数的 4 大核心场景:

📂 1. 获取 URL 路径参数(动态路由)
直接将参数写在路由路径中,使用 <类型:变量名> 的语法,参数会作为形参直接传给视图函数。
python
from flask import Flask

app = Flask(__name__)

# 💡 示例 URL: http://127.0.0
# 可以指定类型:int, string, float, path
@app.route('/user/<int:user_id>')
def get_user(user_id):
    # user_id 已经是 int 类型
    return {"user_id": user_id}
请谨慎使用此类代码。

📂 2. 获取 URL 查询参数(GET 请求参数)
获取 URL 问号后面的参数(例如 ?page=1&size=10),使用 request.args。它是一个类似于字典的 MultiDict 对象。
python
from flask import Flask, request

app = Flask(__name__)

# 💡 示例 URL: http://127.0.0
@app.route('/search')
def search():
    # 推荐使用 .get() 方法,并可以设置默认值和强制类型转换
    keyword = request.args.get('keyword', default='')
    page = request.args.get('page', default=1, type=int)
    
    return {"keyword": keyword, "page": page}
请谨慎使用此类代码。

📂 3. 获取 JSON 数据(POST/PUT 异步请求)
当移动端或前端(如 Axios/Fetch)使用 Content-Type: application/json 发送请求时,使用 request.jsonrequest.get_json()
python
from flask import Flask, request

app = Flask(__name__)

# 💡 示例:POST 请求发送 {"name": "马良", "age": 18}
@app.route('/submit-json', methods=['POST'])
def submit_json():
    # 如果前端没传 JSON 或 Header 不对,request.json 会返回 None
    data = request.json 
    
    # 或者使用 get_json(silent=True) 防止报错崩溃
    # data = request.get_json(silent=True) or {}
    
    name = data.get('name')
    age = data.get('age')
    
    return {"status": "success", "received_name": name}
请谨慎使用此类代码。

📂 4. 获取表单数据与上传文件(POST HTML 表单)
当使用传统 HTML <form> 表单提交(Content-Type: multipart/form-dataapplication/x-www-form-urlencoded)时:
  • 普通文本字段使用 request.form
  • 上传的文件使用 request.files
python
from flask import Flask, request

app = Flask(__name__)

@app.route('/register', methods=['POST'])
def register():
    # 1. 获取表单文本参数
    username = request.form.get('username')
    
    # 2. 获取上传的文件对象
    avatar = request.files.get('avatar')
    if avatar:
        avatar.save(f"./uploads/{avatar.filename}") # 保存文件
        
    return {"username": username, "file_saved": bool(avatar)}
请谨慎使用此类代码。

💡 核心参数获取总结表
参数来源核心语法常见格式举例适用场景
URL 路径 路由形参直接接收 /users/<int:id> 针对于特定资源的 ID 定位
URL 问号后 request.args.get() /search?q=flask 过滤、分页、搜索等 GET 请求
请求体 JSON request.json {"id": 1} 现代前后端分离、API 接口开发
请求体 表单 request.form.get() username=admin 传统 HTML 表单提交
上传文件 request.files.get() 表单中的文件域 头像、图片、文档上传

posted on 2026-09-21 14:02  漫思  阅读(8)  评论(0)    收藏  举报

导航