首页 > 解决方案 > 通过使用 Flask 触发表单操作来抑制重定向

问题描述

我想使用烧瓶来定义按钮的操作。但是,触发动作后,我会自动被重定向。例如,使用以下 html 定义按钮:

<html>
<body>
  <form action="/do_something" method="post">
    <button>Do something!</button>
  </form>
</body>
</html>

以及给定 python 脚本的动作处理:

from flask import Flask, render_template

app = Flask(__name__)


@app.route("/")
def root():
    return render_template("test_3.html")


@app.route("/do_something", methods=["POST"])
def something():
    return 'Something'


app.run()

在这种情况下,我从 url “/”开始。通过单击“做某事”按钮,我将自动被重定向到 URL“/do_something”。我真正想要的是:

  1. 执行动作
  2. 刷新原页面

有人可以帮忙吗?

标签: pythonflask

解决方案


如果 POST 请求/do_something可以发生在任何页面上,我建议重定向回请求的引荐来源网址,这将“刷新”页面。

例如

from flask import Flask, render_template, request, redirect

app = Flask(__name__)


@app.route("/")
def root():
    return render_template("test_3.html")


@app.route("/do_something", methods=["POST"])
def something():
    # Do things
    return redirect(request.referrer or request.host_url)

app.run()

否则,您可以指定要访问的页面redirect()url_for()

例子:

from flask import Flask, redirect, render_template, url_for

app = Flask(__name__)


@app.route("/")
def root():
    return render_template("test_3.html")


@app.route("/do_something", methods=["POST"])
def something():
    # Do things
    return redirect(url_for("app.root"))


app.run()

推荐阅读