Flask提交表单无法获取用户输入值,请问该请求代码哪里存在问题?
问题原因
你的代码核心错误是链接输入控件未放在form表单标签内部。HTML表单提交时,仅会携带<form>开始与闭合标签范围内的表单元素参数,你当前的linkHolder输入框定义在form标签外,提交POST请求时不会携带该参数,因此后端用request.form.get("linkHolder")获取到的结果为None。
另外你代码中还有两处不规范写法:
- 提交按钮使用了错误的闭合方式:
<input>是单标签,不能写</input>结束标签,要么使用<button>标签承载提交按钮文本,要么把按钮文本放到value属性中 - 路由
/button声明了支持GET请求,但没有对应GET请求的处理逻辑,直接通过GET方式访问该路由会抛出异常
修复后代码
1. index.html代码
<form method="POST" action="/button"> <!-- 把输入控件挪到form标签内部 --> <input name="linkHolder" type="url" class="defaultTextBox advancedSearchTextBox link" placeholder="http://www.youtube.com"> <!-- 修正提交按钮写法 --> <button class="btn" type="submit">Go</button> </form>
2. main.py代码
@app.route('/button', methods=["GET", "POST"]) def button(): if request.method == "POST": dlink = request.form.get("linkHolder") print(dlink) return render_template("index.html", dlink=dlink) # 补充GET请求处理逻辑,直接渲染首页 return render_template("index.html")
验证效果
修复后在输入框填写链接点击提交,后端控制台即可正常打印输入的链接,同时页面会重载返回index页面,符合你的需求。
内容的提问来源于stack exchange,提问作者TutorialWarrior 9776
相关产品推荐
相关产品推荐

