如何用Python/Flask获取含模板变量的HTML提交按钮name值?
解决Flask中获取提交按钮对应person.id的问题
先明确HTML属性的选择
你当前把person.id放在按钮的name属性里是可行的,但还有更清晰的实现方式,分两种情况说明:
方案1:保留现有按钮结构
继续用name="{{ person.id }}",按钮显示"x"作为删除标识:
<input type="submit" name="{{ person.id }}" value="x">
方案2:更推荐的结构(清晰易维护)
用隐藏字段存储person.id,按钮统一用固定的name(比如delete),这样后端逻辑更直观:
<form method="POST"> <input type="hidden" name="person_id" value="{{ person.id }}"> <input type="submit" name="delete" value="x"> </form>
Flask后端的处理代码
针对方案1的后端逻辑
点击按钮后,request.form里的键就是person.id的值,对应的值是"x"。你之前用request.form.get('x')错误,是因为把value当成了键来取。正确的获取方式是遍历表单键:
from flask import request # 方式1:遍历找到对应的id(适合多个按钮的场景) person_id = None for key in request.form: # 假设person.id是整数,可根据实际类型调整判断逻辑 if key.isdigit(): person_id = int(key) break # 方式2:直接取第一个键(因为只有被点击的按钮会被提交到表单) if request.form: person_id = next(iter(request.form.keys()))
针对方案2的后端逻辑
这种方式更简单,直接取固定字段即可:
from flask import request if request.form.get('delete'): # 判断是否点击了删除按钮 person_id = request.form.get('person_id') # 按需转成整数类型 person_id = int(person_id) # 这里写你的删除逻辑
总结
推荐用方案2,因为固定的按钮name能让后端逻辑更清晰,后续如果加其他操作按钮(比如编辑),也更容易扩展区分。
内容的提问来源于stack exchange,提问作者Mathom Johnson
相关产品推荐
相关产品推荐

