【问题标题】:Cannot Generate a POST Request on Flask using url_for [duplicate]无法使用 url_for 在 Flask 上生成 POST 请求 [重复]
【发布时间】:2025-12-04 11:10:02
【问题描述】:

我正在尝试创建一个按钮,允许用户通过将发布请求传递到以下视图来删除我系统上的用户。 我的挑战是我无法获取表单的提交部分来触发 POST 请求,它总是生成 GET 然后无法删除用户:

<a href="{{ url_for('users.user_delete_admin', id=user.id) }}" class="btn btn-danger btn-xs" >Delete</a>

我尝试将方法 ="post" 作为参数传递给 url_for 方法,但这似乎不起作用

我的视图处理程序

@users_blueprint.route('/admin/delete-user/<int:id>', methods=["GET","POST"])
@login_required
@admin_login_required
def user_delete_admin(id):
    user = User.query.get((id))
    if request.method =="POST":
       user.delete()
       db.session.commit()
       return redirect(url_for('users.users_list_admin'))
    users = User.query.all()
    return render_template('users-list-admin.html', users=users, current_user=current_user)

还有html表单:

    <table class="table table-striped table-bordered">
    <thead>
      <tr>
        <th>ID</th>
        <th>Username</th>
        <th>Is Admin ?</th>
        <th></th>
        <th></th>
      </tr>
    </thead>
    <tbody>
      {% for user in users %}
        <tr>
          <td>{{ user.id }}</td>
          <td>{{ user.name }}</td>
          <td>{{ user.admin }}</td>
          <td>
            <a href="{{ url_for('users.user_update_admin', id=user.id) }}" class="btn btn-info btn-xs">Edit</a>
          </td>
          <td>
            <a href="{{ url_for('users.user_delete_admin', id=user.id) }}" class="btn btn-danger btn-xs" >Delete</a>
          </td>
        </tr>
      {% endfor %}
    </tbody>
  </table>

用一个简单的表单处理这个相对简单,但由于某种原因,我无法让它正常工作。

谢谢

【问题讨论】:

  • 非常感谢 - 甚至不知道在哪里看。这实际上来自一个教程

标签: python html flask url-for


【解决方案1】:

这样处理:

<form  method = "post" action = "{{ url_for('users.user_delete_admin', id=user.id) }}">
            <button class="btn btn-danger btn-xs" type="submit">Delete</button>
            </form>

【讨论】: