You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将HTML页面表单数据传递至Flask变量遇阻求助

解决Flask中确认页面提交后无法获取表单值的问题

嘿,我懂你现在的头疼——数据在确认页面展示得好好的,可一点提交按钮后端就拿不到值,这种卡在中间的感觉真的烦。咱们一步步拆解问题,把这个坑填上~

核心问题分析

你现在的流程是:index.html收集数据 → annodisplay.html展示确认 → 点击提交传给Flask后端。大概率是确认页面的提交表单没把要传递的数据包含进去——你只是把数据渲染在页面上让用户看,但没把这些数据放进表单的可提交字段里,后端自然拿不到。

具体解决方案

1. 先把确认页面的表单写对

在annodisplay.html里,除了展示数据,还要把需要传递的数据用表单字段(比如隐藏字段)存起来,这样提交时才会把数据带回去。示例代码:

<!DOCTYPE html>
<html>
<head>
    <title>确认信息</title>
</head>
<body>
    <h2>请确认您的信息</h2>
    <p>姓名:{{ user_name }}</p>
    <p>手机号:{{ phone }}</p>

    <!-- 关键:这个表单要包含需要传递的数据 -->
    <form action="/send" method="POST">
        <!-- 隐藏字段,把展示的数据作为表单值传递 -->
        <input type="hidden" name="user_name" value="{{ user_name }}">
        <input type="hidden" name="phone" value="{{ phone }}">
        <button type="submit">确认提交</button>
    </form>
</body>
</html>

这里的name属性非常重要,Flask后端就是通过这个属性来识别字段的,千万别漏!

2. 调整Flask路由逻辑

确保从index到annodisplay的数据传递正常,同时/send路由能正确接收POST过来的数据。示例Flask代码:

from flask import Flask, render_template, request

app = Flask(__name__)

# 处理index页面的表单提交,跳转到确认页
@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        # 从index表单获取数据
        user_name = request.form.get('user_name')
        phone = request.form.get('phone')
        # 把数据传给确认页面渲染
        return render_template('annodisplay.html', user_name=user_name, phone=phone)
    # GET请求时展示index表单
    return render_template('index.html')

# 处理确认页面的提交,接收并处理数据
@app.route('/send', methods=['POST'])
def send_data():
    # 从确认页面的表单获取数据
    user_name = request.form.get('user_name')
    phone = request.form.get('phone')

    # 检查数据是否完整
    if not user_name or not phone:
        return "数据不完整,请返回重新确认"

    # 这里就可以把数据赋值给Python变量,做后续处理了
    print(f"成功获取到数据:姓名={user_name},手机号={phone}")
    # 比如存入数据库、调用接口等操作...

    return "提交成功!感谢您的确认"

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

几个容易踩的坑

  • 表单的method必须设为POST:如果用GET,数据会暴露在URL里,而且安全性差,后端也要用request.args.get()来获取,不推荐。
  • 字段的name属性不能丢:没有name的表单字段,提交时不会被包含在请求里,后端肯定拿不到值。
  • 路由的methods要包含POST:/send路由只处理提交,所以只需要POST就行,避免不必要的请求类型。
  • 确认模板变量是否正确传递:如果annodisplay.html里的数据展示为空,那说明从index传数据的时候就出错了,先排查这一步。

内容的提问来源于stack exchange,提问作者user3114051

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:34:34