在Flask中,我可以在函数运行时显示一个模板,并在函数完成后重定向到另一个模板吗?

时间:2018-05-17 21:25:18

标签: python flask

基本上我想显示一个加载页面,同时进行一个耗时的过程,然后重定向到我复杂的其他页面。

1 个答案:

答案 0 :(得分:0)

虽然不可能实现,但我建议使用javascript完成此任务。

这是一个小例子。首先让我们编写一个非常简单的烧瓶服务器,其中一个端点非常慢。

from flask import Flask, render_template, jsonify
app = Flask(__name__)

@app.route("/")
def hello():
    return render_template('redirect.html')

@app.route("/done")
def done():
    return "Done!"

@app.route("/slow")
def slow():
    import time
    time.sleep(5)
    return jsonify("oh so slow")

if __name__ == "__main__":
    app.run()

现在,我们可以通过从javascript调用端点来创建出色的用户体验。按照惯例将其保存为templates/redirect.html

<html>
  <head>
    <script>
      function navigate() {
        window.location.href = 'done';  // redirect when done!
      }
      fetch('slow').then(navigate); // load the slow url then navigate
    </script>
  </head>
  <body>
    Loading...  <!-- Display a fancy loading screen -->
  </body>
</html>