Я все еще относительно новичок в Flask и немного веб-нооб в целом, но у меня были хорошие результаты. Сейчас я получил форму, в которой пользователи вводят запрос, который присваивается функции, которая может занять от 5 до 30 секунд, чтобы вернуть результат (поиск данных с помощью API Freebase).
Проблема заключается в том, что я не могу сообщить пользователю, что их запрос загружается в течение этого времени, поскольку страница результатов загружается только после завершения функции. Есть ли способ показать сообщение загрузки во время этого? Я нашел некоторый Javascript, который мог отображать сообщение загрузки, пока элементы страницы все еще загружаются, но мой период ожидания происходит до 'render_template.
Я сбил несколько примеров кода, чтобы продемонстрировать свою ситуацию:
Python:
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>
Любая помощь будет принята с благодарностью, я надеюсь, что этот пример поможет.