如何将HTML表单的注册ID传递给Flask实现SQLite用户删除
问题修正方案
你现有代码有几处需要同步调整,按以下步骤修改即可实现功能:
1. 导入Flask必要依赖
在Flask代码顶部先引入请求处理和重定向相关的模块:
from flask import request, redirect, url_for
2. 修正deregister路由代码
需要调整4个核心点:允许POST请求、正确获取表单ID、修正SQL语法、补充事务提交逻辑:
# 增加methods参数允许接收POST请求,匹配你HTML表单的提交方法 @app.route("/deregister", methods=["POST"]) def deregister(): # 从POST表单中获取name属性为id的隐藏字段值 value_from_html = request.form.get("id") # 修正两处错误:1. execute拼写错误 2. DELETE语法不需要加* 3. 参数需传入元组格式,单个值末尾加逗号 db.execute("DELETE FROM registrant WHERE id = ?", (value_from_html,)) # 提交事务,修改才会持久化到SQLite数据库 db.commit() # 删除完成后重定向回注册用户列表页,url_for参数替换为你展示用户列表的路由函数名即可 return redirect(url_for("你的用户列表路由函数名"))
3. (可选)HTML模板规范修正
你现有HTML里的注释格式不符合Jinja2规范,调整后代码更严谨,不修正也不影响当前功能运行:
<!-- 把原注释行替换为Jinja2标准注释格式 --> <input name="id" type="hidden" value="{{ registrant.id }}"> {# trying to pass registrant.id to flask #}
内容的提问来源于stack exchange,提问作者islam sulaiman
相关产品推荐
相关产品推荐

