Flask 查询后未重定向后端烧瓶

Flask 查询后未重定向后端烧瓶,flask,python-3.6,Flask,Python 3.6,我正在制作一个页面,用户在其中选择元素,确认他的选择,然后将数据发送到后端,并生成一个.csv文件。 创建文件后,我希望用户被重定向到可以下载文件的页面 return render_template("tools/downloadfile.html", document=name) 不会将用户重定向到该页面或任何其他页面。 控制台中没有任何错误,创建了文件,但没有重定向到页面。 你知道这是什么原因吗 @app.route('/createdocument', methods

我正在制作一个页面,用户在其中选择元素,确认他的选择,然后将数据发送到后端,并生成一个.csv文件。 创建文件后,我希望用户被重定向到可以下载文件的页面

return render_template("tools/downloadfile.html", document=name)
不会将用户重定向到该页面或任何其他页面。 控制台中没有任何错误,创建了文件,但没有重定向到页面。 你知道这是什么原因吗

@app.route('/createdocument', methods=['POST', 'GET'])
#@login_required
def create_document():
    playlists = get_playlists()
    if request.method == "POST": 
        request_data = str(request.data.decode('UTF-8'))
        genre = get_header_genre(request_data)
        parsed_data = parse_request(request_data)           
        playlist_names = get_parsed_playlists(parsed_data)
        if genre == "playlist":
            #make_playlist_doc(playlist_names, genre)
            print("playlist option not ready yet")
        elif genre == "socan":
            name = make_socan_doc(playlist_names, genre)
            return render_template("tools/downloadfile.html", document=name)
        else:
            print("other request:")
            print(str(request.data.decode('UTF-8')))
    return render_template("tools/createdocument.html", playlists=playlists)


这不起作用的原因是,您的浏览器正在提交POST请求,以便将表单提交到您的Flask应用程序,因此不希望向其返回新网页

您可以尝试返回一个
redirect()
(我自己没有测试过,但是从测试中),例如

或者,客户端您应该提交POST请求,并在成功完成后,发出GET请求以请求新页面


伊恩

相关stackoverflow帖子:谢谢你的回复,我更了解这个问题。很遗憾,重定向没有解决我的问题,我将尝试发出get请求
def create_document():
    playlists = get_playlists()
    if request.method == "POST": 
        # code removed
        if genre == "playlist":
            #make_playlist_doc(playlist_names, genre)
            print("playlist option not ready yet")
        elif genre == "socan":
            name = make_socan_doc(playlist_names, genre)
            return redirect("http://www.example.com", code=302)
    return render_template("tools/createdocument.html", playlists=playlists)