Flask提交表单后结果页显示None,如何实现跨页展示用户输入内容
问题排查
你这里一共存在3处需要修正的错误:
- 第一处:
home.html中的姓名输入框缺少name属性,表单提交时只会把带有name属性的表单字段内容传递到后端,你当前只设置了id="name",后端无法拿到对应值。 - 第二处:
main.py中home视图的处理逻辑存在冗余问题,你在home视图里接收POST参数后用redirect跳转,redirect默认发起的是GET请求,参数会以查询字符串的形式拼接在url后,而你在result视图里从request.form取参数,自然拿不到值。 - 第三处:
result视图的取参逻辑和实际传参方式不匹配。
方案1(最简方案,无需中间跳转)
- 修正
home.html的输入框,添加name="name"属性:
<input type="text" class="name-input name mb-3" id="name" name="name">
- 删掉
home视图里的POST处理逻辑,仅处理GET请求即可:
@app.route('/', methods=['GET']) def home(): return render_template('home.html')
result视图代码保持原有内容即可,表单直接用POST方法提交到/result路由,request.form.get('name')可以正常拿到输入的姓名。
方案2(保留原有跳转逻辑)
如果你确实需要保留经过home视图跳转的逻辑,按如下修改:
- 同样先修正
home.html的输入框,添加name="name"属性。 - 修改
result视图的取参逻辑,从GET请求的查询参数中取值:
@app.route("/result", methods=['GET']) def result(): name = request.args.get('name') return render_template("result.html", name=name)
内容的提问来源于stack exchange,提问作者Cactix
相关产品推荐
相关产品推荐

