繁体   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