Flask 应用程序 - 删除功能不起作用

Flask application - delete function isn't working

我正在构建一个简单的 flask 应用程序(CRUD 应用程序)

到目前为止,我已经设法从 HTML 页面获取输入数据,将其保存到 SQLite 数据库并将其呈现回页面。

现在我想渲染一个删除按钮,我可以点击按钮删除数据,我写了这样的代码,当我点击按钮时没有看到错误,但也没有删除任何东西。

任何人都可以指出任何错误或错误吗?

@app.route('/users', methods=["GET", "POST"])
def users():
    if request.form.get("delete"):
        user_db = Users.query.filter_by(user_id=request.form.get("user_id")).first()
        db.session.delete(user_db)
        db.session.commit()
        return redirect("user.html")

    if request.form:
        user_db = Users(user_name = request.form.get("user_name"),
                        age = request.form.get("age"),
                        gender=request.form.get("gender"),
                        activeness=request.form.get("activeness")
                        )
        db.session.add(user_db)
        db.session.commit()
    user_data = Users.query.all()
    return render_template("users.html", user_data = user_data)

<table>
    <tr>
        <th>User ID</th>
        <th>User name</th>
        <th>Age</th>
        <th>Gender</th>
        <th>Activeness<th>
    </tr>
    {% for i in user_data %}
    <tr>
        <td>{{ i.user_id }}</td>
        <td>{{ i.user_name }}</td>
        <td>{{ i.age }}</td>
        <td>{{ i.gender }}</td>
        <td>{{ i.activeness }}</td>
        <td><form method="POST" action="./users">
            <input type="hidden" value="{{ i.user_id }}" name="user_id">
            <input type="submit" value="Delete">
        </form></td>
    </tr>
    {% endfor %}
</table>

啊哈...!

我通过为删除按钮编写另一个路由来修复代码

@app.route('/users', methods=["GET", "POST"])
def users():
    if request.form:
        user_db = Users(user_name = request.form.get("user_name"),
                        age = request.form.get("age"),
                        gender=request.form.get("gender"),
                        activeness=request.form.get("activeness")
                        )
        db.session.add(user_db)
        db.session.commit()
    user_data = Users.query.all()
    return render_template("users.html", user_data = user_data)

@app.route('/delete_users', methods=["POST"])
def delete_user():
    if request.form:
        user_db = Users.query.filter_by(user_id=request.form.get("user_id")).first()
        db.session.delete(user_db)
        db.session.commit()
        return redirect("/users")