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

如何在HTML与Flask的action链接中添加变量?

解决Flask模板中删除用户按钮的URL变量插入问题
  • 你用的是Flask默认的Jinja2模板引擎,它的变量插值语法是{{ 变量名 }},不是你习惯的${variable},所以之前的写法无效。
  • 另外你的表单用了method="post",但原Flask路由只允许GET请求,需要修正路由支持POST方法,避免出现405错误。

修改后的HTML代码

<body>
    <h1>User Management</h1>
    <table>
        <tr>
            <th>First Name</th>
            <th>Last Name</th>
            <th>User ID</th>
            <th>Email</th>
        </tr>
         {% for u in users %}
        <tr>
            {% for el in u[0:] %}
                <td>{{el}}</td>
            {% endfor %}
            <td>
                <!-- 方法1:直接拼接URL -->
                <form action="/delete_user/{{ u[2] }}" method="post">
                    <button type="submit">Delete User</button>
                </form>
                
                <!-- 方法2:用url_for生成URL(更推荐,路由变更时无需修改模板) -->
                <!-- <form action="{{ url_for('deleteuser', user_id=u[2]) }}" method="post">
                    <button type="submit">Delete User</button>
                </form> -->
            </td>
        </tr>
        {% endfor %}
    </table>
</body>

修改后的Python路由代码

@app.route('/delete_user/<user_id>', methods=['POST'])
def deleteuser(user_id):
    # 这里编写删除user_id对应用户的逻辑
    # 比如删除完成后重定向回用户管理页
    # return redirect(url_for('user_management'))
    pass

补充说明

  1. {{ u[2] }}是Jinja2的变量渲染语法,会自动把循环中的用户ID值插入到URL里。
  2. 给路由添加methods=['POST'],确保能接收表单提交的POST请求。
  3. url_for方法会根据视图函数名自动生成对应URL,比硬编码URL更灵活,后续如果修改路由规则,模板不需要同步调整。

内容的提问来源于stack exchange,提问作者Samantha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:42:38