Flask中无法通过request.form获取表格表单数据的问题
解决Flask表单表格行数据提交问题
你遇到的问题核心是对应行的用户数据没有被纳入表单提交的参数集合——按钮本身只会提交自身的name和value,纯文本展示的用户信息不会自动被发送到后端。要解决这个问题,需要给每一行的表单添加隐藏输入字段,把用户数据作为表单控件包含进去。
正确的HTML模板写法示例
<form method="POST" action="/useraction"> <table> <thead> <tr> <th>用户名</th> <th>邮箱</th> <th>地址</th> <th>操作</th> </tr> </thead> <tbody> {% for user in users %} <tr> <td>{{ user.username }}</td> <td>{{ user.useremail }}</td> <td>{{ user.useraddress }}</td> <td> <!-- 隐藏字段存储当前行的用户数据 --> <input type="hidden" name="username" value="{{ user.username }}"> <input type="hidden" name="useremail" value="{{ user.useremail }}"> <input type="hidden" name="useraddress" value="{{ user.useraddress }}"> <!-- 操作按钮,用name区分动作,value标记具体操作 --> <button type="submit" name="action" value="verify">Verify</button> <button type="submit" name="action" value="delete">Delete</button> </td> </tr> {% endfor %} </tbody> </table> </form>
后端Flask处理示例
@app.route('/useraction', methods=['POST']) def useraction(): username = request.form.get('username') useremail = request.form.get('useremail') useraddress = request.form.get('useraddress') action = request.form.get('action') # 根据动作和用户数据执行对应逻辑 if action == 'verify': # 验证逻辑 pass elif action == 'delete': # 删除逻辑 pass return "处理完成"
关键说明
- 必须用
<input type="hidden">把需要提交的用户数据封装成表单控件,这样点击按钮提交时,浏览器才会把这些字段的name和value一并发送到后端。 - 如果担心同表格多提交冲突,也可以给每一行单独嵌套一个
<form>标签(放在<tr>内部或包裹整行),这样每个行的表单独立,提交时只会发送当前行的隐藏字段和按钮数据。
内容的提问来源于stack exchange,提问作者Bhupesh Patil
相关产品推荐
相关产品推荐

