You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 02:57:10