如何根据变量重定向烧瓶中的URL

时间:2019-06-11 18:36:04

标签: javascript python jquery flask

当变量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'))

我希望该网址重定向到“结果”,但它仍保持为加载页面

1 个答案:

答案 0 :(得分:0)

不可能按照您的想法进行操作。简而言之,最简单的方法是在页面(ajax)中添加一些Javascript,并轮询服务器以查找变量何时更改。有几件事情要考虑:

  1. 如何存储变量? Session是不重要的小值的选项。否则,对于大型数据集可能需要DB,或者对于长时间运行的进程可能需要background worker

  2. 可以使用ajax(例如jquery $.get)和带有JavaScript的setTimeout函数来将值返回到视图中。这应该在您的应用程序中调用一条新路线,该路线将从您使用的存储方法中检索值。

  3. 完全同步并查看Sockets(例如)将使您能够创建更多“实时”视图,您的应用程序视图可以监听事件并进行更新而无需重新加载。但这确实会改变您的应用程序的运行方式。

希望这会有所帮助!

相关问题