簡體   English   中英

如何根據變量重定向燒瓶中的url

[英]how to redirect url in flask depending on a variable

我想在變量search_done為true時重定向URL,但在那之前我想要顯示加載文件,但我無法設法這樣做。

我已經嘗試過將各種變量傳遞給html,但由於變量在加載文件運行期間發生變化,因此變量不會為真。

單擊搜索按鈕時,URL將更改為加載文件。

@app.route("/", methods=['GET','POST'])
def index():
    global search_done
    global songs
    if request.method == 'POST':
        search_request = request.form.getlist('search[]')
        songs=[]
        data=search_api(search_request)
        search_done=False
        if data!=None:
            for hit in data:
                songs.append(Song(hit['result']['full_title'],hit['result']['primary_artist']['name'],hit['result']['url'],hit['result']['song_art_image_thumbnail_url']))
            for i in songs:
                print(i)
            search_done=True
    return render_template('layout.html')

@app.route("/result")
def result():
    global songs
    return render_template("result.html",songs=songs)

@app.route("/loading")
def load():
    global search_done  
    while not search_done:
        return render_template("loading.html")                      
    return redirect(url_for('result'))

我希望網址重定向到“結果”,但它只是作為加載頁面保留

以你的思維方式做這件事是不可能的。 簡而言之,最簡單的方法是向頁面添加一些Javascript(ajax),並輪詢您的服務器以查找變量何時更改。 有幾點需要考慮:

  1. 你將如何存儲變量? 會話是非重要的小值的選項。 否則,對於大型數據集可能需要DB ,或者對於長時間運行的進程可能需要后台工作程序。

  2. 將值返回到視圖中可以使用ajax(例如jquery $.get )和帶有javascript的setTimeout函數來完成。 這應該在您的應用中調用一個新路由,從您正在使用的存儲方法中檢索值。

  3. 完全異步並查看套接字 (例如)將使您能夠創建更多“實時”視圖,您的應用程序視圖可以監聽事件並在不重新加載的情況下進行更新。 但這確實會改變您的應用的運行方式。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM