Flask报错:无法构建'Edit.edit'端点URL,缺失'id'参数如何解决?
解决Flask BuildError: 未指定endpoint所需的[id]参数问题
问题详情
报错信息:
BuildError: Could not build url for endpoint 'Edit.edit'. Did you forget to specify values ['id']?
问题原因
你的Flask后端路由@Edit.route('/edit/<int:id>')定义时要求必须接收id参数,但在edit.html的表单action中使用{{ url_for('Edit.edit') }}时,没有传递这个必填的id参数,导致Flask无法生成合法的URL。
另外,后端代码里还有一个潜在问题:values = (id)不是合法的元组,会导致数据库执行查询时出错,正确的写法应该是values = (id,)(添加逗号确保是元组类型)。
修复步骤
1. 完善后端视图函数,传递id到模板
修改后端edit函数,确保将当前用户的id传递给模板,同时修正元组写法:
@Edit.route('/edit/<int:id>', methods = ['POST' , 'GET']) def edit(id): connection = create_connection() cursor = connection.cursor() sql = "SELECT * FROM users WHERE userid = %s" # 修正元组写法,添加逗号 values = (id,) cursor.execute(sql, values) # 获取用户数据 user = cursor.fetchone() # 将id和用户数据传入模板 return render_template('edit.html', user=user, current_id=id)
2. 修正edit.html中的表单action
在模板中调用url_for时,传入必填的id参数:
<form class="form-horizontal" action="{{ url_for('Edit.edit', id=current_id) }}" method="post" id = "prim_skills_form">
或者如果模板中能通过user.userid获取用户ID,也可以写成id=user.userid。
3. 验证首页跳转逻辑
你的index.html中的跳转链接<a href="/edit/{{row.userid}}">Edit</a>是正确的,点击后会携带用户ID跳转到编辑页面,这部分无需修改。
内容的提问来源于stack exchange,提问作者Bilge Kaan Özkan
相关产品推荐
相关产品推荐

