花我晚上的愛好為我女兒撰寫地形測驗。利用 web 和 Stack Overflow 資源,我在https://ac1976.pythonanywhere.com/api/wereld上運行了一個 API點擊它,服務器將回應一個由隨機國家/首都組合組成的 JSON 物件,以及一個首都的“錯誤”答案串列。錯誤答案基于到(正確)首都的距離,并且也是隨機的。所以東京不會作為比利時首都的答案出現,但巴黎和倫敦可能會出現。
主題:現在構建一個燒瓶應用程式,從上述 API 獲取回應,并創建一個多選問答游戲,詢問隨機國家的首都,并為用戶提供 4 個多選選項。
我完成所有這些作業的主要途徑是這樣的:
@app.route('/api/continent/', methods=['GET', 'POST'])
def quiz():
if request.method == "GET":
quiz = Game('wereld')
country = quiz.country
answers = quiz.answers
session['capital'] = quiz.capital
return render_template('quiz.html', a1=answers[0], a2=answers[1], a3=answers[2], a4=answers[3], country=country)
else:
answer = request.form['subject']
if answer == session.get('capital'):
return render_template('antwoord.html', answer="Jaaaaa...")
else:
return render_template('antwoord.html', answer="Neee..")
因此,在最初訪問路由時,服務器會初始化 Game 類,它本質上是一個包裝器,用于捕獲來自 API 的回應,并將回應與我們需要的每個資料點的方法打包在一起:國家、答案和資本。這些測驗專案存盤在名稱相似的變數 country、answers 和 capital 中。國家(以問題的形式)和答案(作為 4 個單獨的按鈕)在 HTML 模板檔案中使用,在到達路線時顯示。
如果用戶按下四個按鈕之一,路由邏輯的第二部分會判斷答案是對還是錯,并回傳一個新的 html 視圖,告訴用戶答案是對的……還是錯的。
好的。一切都有道理,對吧?
這是我的問題。如何在說 1 秒后自動定向回到“if 回圈的頂部”,以便代碼自動從 API 重新獲取新回應,以進行另一輪?我試圖在 if / else 回圈之上放置一個簡單的“While True:”,它適用于這個測驗的原始終端版本......但 Flask 沒有它。我明白為什么(它需要一個'GET')但是....如何引起一個新的?
感謝您的想法/指導/為我指明正確的方向
阿里
uj5u.com熱心網友回復:
HTML 頁面標題中的元重繪 標簽怎么樣。
在定義的時間到期后,您將被重定向到指定的 URL。
然后它看起來像這樣。
<meta http-equiv="refresh" content="1; url={{url_for('quiz', _external=True)}}" />
如果您想使用 JavaScript,也可以使用帶有超時的變體。
const uri = {{url_for('quiz') | tojson}};
setTimeout(() => window.location.replace(uri), 1000);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/453319.html
上一篇:回圈遍歷函式引數(與multcomp::glht的一系列對比)
下一篇:計算引數在一定范圍內的時間問題
