当前位置: 首页 > 面试题库 >

在Flask中执行耗时的功能时显示“正在加载”消息

锺离阿苏
2023-03-14
问题内容

我对Flask还是比较陌生,总体而言有点网络菜鸟,但是到目前为止,我取得了一些不错的成绩。现在,我已经有了一个表单,用户可以在其中输入查询,该查询被赋予一个函数,该函数可能需要5到30秒的时间才能返回结果(使用Freebase
API查找数据)。

问题是我无法让用户知道他们的查询正在这段时间内加载,因为结果页面仅在函数完成工作后才加载。有什么办法可以显示正在加载的消息吗?我发现一些Javascript可以在页面元素仍在加载时显示加载消息,但是我的等待期发生在“
render_template”之前。

我整理了一些示例代码,只是为了演示我的情况:

蟒蛇:

from flask import Flask
from flask import request
from flask import render_template
import time

app = Flask(__name__)

def long_load(typeback):
    time.sleep(5) #just simulating the waiting period
    return "You typed: %s" % typeback

@app.route('/')
def home():
    return render_template("index.html")

@app.route('/', methods=['POST'])
def form(display=None):
    query = request.form['anything']
    outcome = long_load(query)
    return render_template("done.html", display=outcome)

if __name__ == '__main__':
    #app.debug = True
    app.run()

摘自index.html:

<body>
    <h3>Type anything:</h3>
    <p>
    <form action="." method="POST">
        <input type="text" name="anything" placeholder="Type anything here">
        <input type="submit" name="anything_submit" value="Submit">
    </form>
    </p>    
</body>

摘录自done.html:

<body>
    <h3>Results:</h3>
    <p>
        {{ display }}
    </p>
</body>

任何帮助将不胜感激,我希望这个例子可以帮助。


问题答案:

这可以通过使用div包含“正在加载gif”图像的来完成。单击提交按钮后,将使用javascript显示div。要实现此功能,您可以查看以下网站:http :
//web.archive.org/web/20181023063601/http :
//www.netavatar.co.in/2011/05/31/how-to-
show使用javascript和css在页面加载时加载gif图像/



 类似资料:
  • 有些函数需要很长时间才能执行。我想让用户用进度条等待。不幸的是,当我运行这个函数时,它只在函数结束时运行,而不是在我想要的时候。让我解释一下,我使用“sendloading()”方法启动进度条,但在测试期间,该进度条仅在处理其他函数“copyAssets”或“createOnClicBtnInsert()”后显示。有人能解释一下原因吗? 这是我的代码: 以下是我的进度条代码:

  • 问题内容: 我只是想知道如何显示指示异步请求正在运行的图像。我使用以下代码执行异步请求: 有任何想法吗? 问题答案: 当然,您可以在发出请求之前显示它,并在请求完成后隐藏它: 我通常更喜欢将其绑定到全局ajaxStart和ajaxStop事件的更通用的解决方案,这样它就可以显示在所有ajax事件中:

  • 问题内容: 我正在寻找一种在调用异步服务时自动显示和隐藏“正在加载”消息的方法,所以不要这样做: 我只想这样做,但是仍然在完成时显示和隐藏消息。 简而言之,我想更改异步调用的行为。感谢您提出的所有建议。 丹尼尔 问题答案: 您可以将调用本身包装在处理显示加载消息的对象中,也许对错误或其他原因重试几次。像这样: 要进行呼叫,请执行以下操作: 您可以使用代码扩展它,以检测花费很长时间的呼叫并显示某种繁

  • 问题内容: 您好,我正在创建一个ASP.NET/C#应用程序,我有一个更新面板,该面板需要花费一些时间进行更新。在计算期间,是否可以显示“正在加载…请稍候”消息? 目前,我正在使用AJAX面板动画淡入/淡出,以使面板在计算时消失,然后在完成时重新出现。但这不是很实际。 如果可能,我需要显示一条消息。 感谢您的任何帮助。 这是我的面板的代码: 和Ajax Panel动画扩展器 问题答案: 您可以在以

  • 问题内容: 我有以下jQuery Ajax调用: 我想在进行ajax调用时显示图像。我怎样才能做到这一点? 谢谢, 问题答案: 试试这个 : 这将在您每次执行ajax请求时显示加载图像,我在页面顶部设置了该div,因此它不会阻塞页面,但是您始终可以看到ajax调用何时进行。

  • 问题内容: 目前,我有一个Angular.js页面,它允许搜索并显示结果。用户单击搜索结果,然后单击“后退”按钮。我希望再次显示搜索结果,但是我不知道如何触发搜索执行。详细信息如下: 我的Angular.js页面是一个搜索页面,带有一个搜索字段和一个搜索按钮。用户可以手动键入查询并按下按钮,然后会触发ajax查询并显示结果。我用搜索词更新了网址。一切正常。 用户单击搜索结果,然后转到另一个页面-效