私はまだ Flask に比較的慣れておらず、一般的には Web 初心者ですが、これまでのところいくつかの良い結果が得られています。現在、ユーザーがクエリを入力するフォームがあります。これは、結果を返すのに 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>
この例が役立つことを願っています。