删除数据库中的条目后,flask render_template()不显示主页

掌握数据

我构建了一个CRUD应用程序,该应用程序已经可以很好地工作了,但是在删除数据库中的条目后,无法重定向到主页(即渲染主页模板)。

def create_venue_submission():

name = request.form["name"]
city = request.form["city"]

try:
    venue = Venue(
        name=name,
        city=city,
    )
    db.session.add(venue)
    db.session.commit()
    flash("Venue " + request.form["name"] + " was successfully listed!")
except:
    flash(
        "An error occurred. Venue " + request.form["name"] + " could not be listed."
    )
    db.session.rollback()
    print(sys.exc_info())
finally:
    db.session.close()

return render_template("pages/home.html")

这完美地工作,重定向工作。但是,以下内容则不行(请参阅最后一行代码的注释)

@app.route("/venues/<venue_id>", methods=["DELETE"])
def delete_venue(venue_id):

    try:
        venue_to_delete = Venue.query.get(venue_id)
        db.session.delete(venue_to_delete)
        db.session.commit()
        print("delete that crap")
        flash(f"Venue {venue_id } was successfully deleted")
    except:
        db.session.rollback()
        print(sys.exc_info())
        flash(f"An error occurred: Venue {venue_id } cound not be deleted")
    finally:
        db.session.close()

    return render_template("pages/home.html") ### This never gets triggered.

我在前端触发了这条路线,如下所示:

<button
  id="delete-venue"
  data-id="{{ venue.id }}"
  class="btn btn-default btn-sm"
>
  Delete
</button>

<script>
  const deleteVenueBtn = document.getElementById("delete-venue");
  deleteVenueBtn.onclick = function(e) {
    const venueId = e.target.dataset["id"];
    console.log(`DELETE /venues/${venueId}`);
    fetch(`/venues/${venueId}`, {
      method: "DELETE"
    });
  };
</script>

在数据库中,正确的条目被删除,但是此后什么也没有发生。我不知道,为什么这行不通。我看不到代码本身有错误。谁能帮助我或解释这种奇怪的行为?

酷开发者

我认为您应该使用重定向而不是render_template-

from flask import url_for, redirect

@app.route("/venues/<venue_id>", methods=["DELETE"])
def delete_venue(venue_id):

    try:
        venue_to_delete = Venue.query.get(venue_id)
        db.session.delete(venue_to_delete)
        db.session.commit()
        print("delete that crap")
        flash(f"Venue {venue_id } was successfully deleted")
    except:
        db.session.rollback()
        print(sys.exc_info())
        flash(f"An error occurred: Venue {venue_id } cound not be deleted")
    finally:
        db.session.close()

    return redirect(url_for("name of home page function")) ### This never gets triggered.
@app.route("/venues/<venue_id>", methods=["DELETE"])
def delete_venue(venue_id):

    try:
        venue_to_delete = Venue.query.get(venue_id)
        db.session.delete(venue_to_delete)
        db.session.commit()
        print("delete that crap")
        flash(f"Venue {venue_id } was successfully deleted")
    except:
        db.session.rollback()
        print(sys.exc_info())
        flash(f"An error occurred: Venue {venue_id } cound not be deleted")
    finally:
        db.session.close()

    return render_template("pages/home.html") ### This never gets triggered.

在前端

<script>
  const deleteVenueBtn = document.getElementById("delete-venue");
  deleteVenueBtn.onclick = function(e) {
    const venueId = e.target.dataset["id"];
    console.log(`DELETE /venues/${venueId}`);
    fetch(`/venues/${venueId}`, {
      method: "DELETE",

    }).then(response => {
        // HTTP 301 response
        // HOW CAN I FOLLOW THE HTTP REDIRECT RESPONSE?
        if (response.redirected) {
            window.location.href = response.url;
        }
    })
  };
</script>

特别感谢Andreas Gelever的JavaScript部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

显示和删除数据库中的数据

来自分类Dev

单击删除按钮删除数据库条目。通过数据库循环显示数据

来自分类Dev

render_template中的flask参数

来自分类Dev

Flask render_template数据发送,在jQuery中处理

来自分类Dev

从循环显示的视图列表中删除数据库行

来自分类Dev

删除数据表中的“显示条目”

来自分类Dev

烧瓶中的动态render_template()

来自分类Dev

render_template 中的空列表

来自分类Dev

删除数据库条目后刷新列表视图

来自分类Dev

Flask 在 render_template 后追加结果的问题

来自分类Dev

Flask render_template() & **locals() arg 不工作......不会在 HTML 文本中显示 python 变量

来自分类Dev

Flask,json,render_template,表单操作,数据表

来自分类Dev

Flask:将HTML数据帧处理为render_template

来自分类Dev

Python Flask从变量中渲染文本,例如render_template

来自分类Dev

数据在房间数据库显示,从服务器中删除后,即使

来自分类Dev

如何从ajax POST表单提交使用Flask的render_template

来自分类Dev

如何从ajax POST表单提交使用Flask的render_template

来自分类Dev

python flask render_template html无法正确渲染

来自分类Dev

CodeIgniter的日历不显示数据库表中的某些条目

来自分类Dev

render_template中的可选关键字参数

来自分类Dev

烧瓶:在返回的render_template()或redirect()中包含HTML

来自分类Dev

删除数据库条目后重新加载html表数据

来自分类Dev

将数据插入数据库后,无法在 Laravel 中显示数据库中的数据

来自分类Dev

Redis后台作业完成后如何返回flask render_template?

来自分类Dev

从通过两个表绑定的数据网格中删除数据库条目

来自分类Dev

显示不带括号的数据库条目

来自分类Dev

根据数据库条目显示图标

来自分类Dev

使用Ajax,JavaScript,PHP删除数据库条目

来自分类Dev

如何使用Axios删除数据库条目?

Related 相关文章

  1. 1

    显示和删除数据库中的数据

  2. 2

    单击删除按钮删除数据库条目。通过数据库循环显示数据

  3. 3

    render_template中的flask参数

  4. 4

    Flask render_template数据发送,在jQuery中处理

  5. 5

    从循环显示的视图列表中删除数据库行

  6. 6

    删除数据表中的“显示条目”

  7. 7

    烧瓶中的动态render_template()

  8. 8

    render_template 中的空列表

  9. 9

    删除数据库条目后刷新列表视图

  10. 10

    Flask 在 render_template 后追加结果的问题

  11. 11

    Flask render_template() & **locals() arg 不工作......不会在 HTML 文本中显示 python 变量

  12. 12

    Flask,json,render_template,表单操作,数据表

  13. 13

    Flask:将HTML数据帧处理为render_template

  14. 14

    Python Flask从变量中渲染文本,例如render_template

  15. 15

    数据在房间数据库显示,从服务器中删除后,即使

  16. 16

    如何从ajax POST表单提交使用Flask的render_template

  17. 17

    如何从ajax POST表单提交使用Flask的render_template

  18. 18

    python flask render_template html无法正确渲染

  19. 19

    CodeIgniter的日历不显示数据库表中的某些条目

  20. 20

    render_template中的可选关键字参数

  21. 21

    烧瓶:在返回的render_template()或redirect()中包含HTML

  22. 22

    删除数据库条目后重新加载html表数据

  23. 23

    将数据插入数据库后,无法在 Laravel 中显示数据库中的数据

  24. 24

    Redis后台作业完成后如何返回flask render_template?

  25. 25

    从通过两个表绑定的数据网格中删除数据库条目

  26. 26

    显示不带括号的数据库条目

  27. 27

    根据数据库条目显示图标

  28. 28

    使用Ajax,JavaScript,PHP删除数据库条目

  29. 29

    如何使用Axios删除数据库条目?

热门标签

归档