【问题标题】:Supress Redirecting by triggering a form action using Flask [duplicate]通过使用 Flask 触发表单操作来抑制重定向 [重复]
【发布时间】:2020-04-17 15:00:23
【问题描述】:

我想使用烧瓶来定义按钮的操作。但是,触发动作后,我会自动被重定向。例如。使用以下 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. 刷新原始页面

有人可以帮忙吗?

【问题讨论】:

    标签: python flask


    【解决方案1】:

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

    例如

    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()
    

    【讨论】:

      猜你喜欢
      • 2011-08-11
      • 2015-09-15
      • 2016-09-13
      • 1970-01-01
      • 2018-04-12
      • 2017-03-07
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多