【问题标题】:Need help on deleting a row from database with a button在使用按钮从数据库中删除行时需要帮助
【发布时间】:2021-11-23 09:24:53
【问题描述】:

我的 CS50 webapp 最终项目需要帮助,我无法使用按钮从 SQLite (phpLiteAdmin) 表中删除一行。

[如下所示,但按钮不起作用]

这里是index.html中的表格代码:

            <table>
                <thead>
                    <tr>
                        <th>Word</th>
                        <th>Translation</th>
                        <th> </th>
                    </tr>
                </thead>
                <tbody>
                    {% for word in words %}
                        <tr>
                            <td>{{ word.kelime }}</td>
                            <td>{{ word.ceviri }}</td>
                            <td>
                                <button class="btn btn-primary" onclick="delete({{ word.id }})" type="delete">Delete</button>
                            </td>
                        </tr>
                    {% endfor %}
                </tbody>
            </table>

这是我在 application.py 中所做的:

@app.route("/", methods=["GET", "POST"])
def index():
  if request.method == "POST":

    kelime = request.form.get("kelime")
    ceviri = request.form.get("ceviri")

    db.execute("INSERT INTO words (kelime, ceviri) VALUES (?,?)", kelime, ceviri)

    return redirect("/")

  else:

    words = db.execute("SELECT * FROM words")
    return render_template("index.html", words=words)

def delete(id):
  if request.method == "POST":
    db.execute("DELETE FROM words WHERE id = ?", id)
    return redirect("/")

我不知道我做错了什么,我是编码新手,所以如果你们能为我简化它会很棒。提前谢谢你

【问题讨论】:

  • 将您的代码粘贴为文本而不是屏幕截图
  • 您的按钮正在尝试调用名为 delete 的 Javascript 函数。你有这样一个函数可以在你的应用程序中创建一个 POST 请求吗?我猜这是问题的根源——您希望按钮调用您的 Python 代码。如果您确实有delete 功能,请发布。
  • 您并不想每次重定向回索引时都插入两个新词。插入选项应该是一个单独的请求。否则,一旦您删除,浏览器将重定向回索引,您将重新插入。

标签: python sql sqlite flask cs50


【解决方案1】:

而不是这个:

 <td>
    <button class="btn btn-primary" onclick="delete({{ word.id }})" type="delete">Delete</button>
 </td>

试试这个:

  <td>
    <form method='POST' action='delete'>
      <input type=hidden name='id' value='{{ word.id }}'>
      <button class='btn btn-primary' type='delete'>Delete</button>
    </form>
  </td>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-11
    • 2014-04-28
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多