flask 获取各种请求数据:GET form-data x-www-form-urlencoded JSON headers 上传文件

在 Flask 里,能使用多种方法获取不同类型的请求数据,下面详细介绍常见请求数据的获取方式。

获取查询字符串参数(GET 请求)

查询字符串参数一般在 URL 里,以 ?key1=value1&key2=value2 这种形式存在。可通过 request.args 来获取。

python 复制代码
from flask import Flask, request

app = Flask(__name__)

@app.route('/get_params')
def get_params():
    # 获取单个参数
    name = request.args.get('name')
    age = request.args.get('age', type=int)  # 指定参数类型

    # 获取所有参数
    all_params = request.args.to_dict()

    return f"Name: {name}, Age: {age}, All params: {all_params}"

if __name__ == '__main__':
    app.run(debug=True)

获取表单数据(POST 请求)

表单数据通常由 HTML 表单提交,能通过 request.form 来获取 form-data 和 x-www-form-urlencoded 数据。

python 复制代码
from flask import Flask, request

app = Flask(__name__)

@app.route('/submit_form', methods=['POST'])
def submit_form():
    # 获取单个表单字段
    username = request.form.get('username')
    password = request.form.get('password')

    # 获取所有表单字段
    all_form_data = request.form.to_dict()

    return f"Username: {username}, Password: {password}, All form data: {all_form_data}"

if __name__ == '__main__':
    app.run(debug=True)


获取 JSON 数据(POST、PUT 等请求)

如果请求数据是 JSON 格式,可使用 request.get_json() 方法获取。

python 复制代码
from flask import Flask, request

app = Flask(__name__)

@app.route('/submit_json', methods=['POST'])
def submit_json():
    # 获取 JSON 数据
    data = request.get_json()

    if data:
        name = data.get('name')
        age = data.get('age')
        return f"Name: {name}, Age: {age}"
    else:
        return "No valid JSON data provided", 400

if __name__ == '__main__':
    app.run(debug=True)

获取请求头信息

请求头信息可通过 request.headers 来获取。

python 复制代码
from flask import Flask, request

app = Flask(__name__)

@app.route('/get_headers')
def get_headers():
    # 获取单个请求头
    user_agent = request.headers.get('User-Agent')

    # 获取所有请求头
    all_headers = dict(request.headers)

    return f"User-Agent: {user_agent}, All headers: {all_headers}"

if __name__ == '__main__':
    app.run(debug=True)

获取上传文件

文件上传请求的数据能通过 request.files 来获取。

python 复制代码
from flask import Flask, request

app = Flask(__name__)

@app.route('/upload_file', methods=['POST'])
def upload_file():
    # 获取上传的文件
    file = request.files.get('file')

    if file:
        # 保存文件
        file.save('uploaded_file.txt')
        return "File uploaded successfully"
    else:
        return "No file provided", 400

if __name__ == '__main__':
    app.run(debug=True)

同时获取 URL 查询字符串参数和表单数据

在 Flask 里, request.values 是一个特殊的 MultiDict 对象,它将 request.args (用于获取 URL 查询字符串参数)和 request.form (用于获取表单数据)结合起来,提供了一种统一的方式来访问 GET 和 POST 请求中的数据。

python 复制代码
from flask import Flask, request

app = Flask(__name__)

@app.route('/mixed_data', methods=['GET', 'POST'])
def mixed_data():
    param1 = request.values.get('param1')
    param2 = request.values.get('param2')
    return f"Param1: {param1}, Param2: {param2}"

if __name__ == '__main__':
    app.run(debug=True)
  • request.values 会优先获取表单数据,如果表单数据和查询字符串参数有同名的键,会返回表单数据的值。
  • 对于 JSON 数据和文件上传数据, request.values 无法获取,需要使用 request.get_json() 和 request.files 来处理。

参考链接

https://dormousehole.readthedocs.io/en/latest/api.html#flask.Request.args

相关推荐
雨晨源码(同名B站)13 小时前
深度学习毕业设计选题推荐:基于YOLO11的交通标志检测系统设计与实现(Python+Django+Vue3+对接deepseek)
人工智能·python·深度学习·机器学习·django·课程设计
2601_9679791213 小时前
python中str函数怎么用?使用方法与注意事项详解
python·使用方法·字符串转换·注意事项·str函数
青少儿编程课堂13 小时前
蓝桥杯青少组图形化+信息素养+电子学会Scratch考级:校园口算闯关解析
c++·python·算法·bfs·信息学竞赛
fanruitian14 小时前
python 机器学习 交叉验证train_test_split 网格搜索GridSearchCV
开发语言·python·机器学习
xiaoye-duck14 小时前
《C++ 工具库实战》C++ 解析利器 JsonCpp:从基础使用到封装简易 JSON 工具
c++·json·第三方库
javachen__14 小时前
试试Jackson:把JSON拉平成普通属性
json
前端精髓1 天前
结构化输出with_structured_output(抽卡)
python·langchain
尹人入圣1 天前
目前热门的IP驱动产业新场景新工具
网络·python·网络协议·tcp/ip
Nuanyt1 天前
Agent 学习笔记(下篇三):上线工程、进阶选择与操作界面(Stage 7 / 7.5 / 8 + 延伸路线)
笔记·python·学习·memory·aiagent·harness
吴卫斌1 天前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化