Flask python-werkzeug.routing.BuildError:无法为端点生成url

Flask python-werkzeug.routing.BuildError:无法为端点生成url,python,flask,Python,Flask,我从网站下载输出文件时遇到问题。我使用Flask上传文件,处理它们,生成输出并下载文件 下面您可以看到我收到的错误: 似乎我没有传递文件名,但我不知道如何修复它。 任何帮助或建议都将不胜感激 flask.py中与此问题相关的函数 UPLOAD_FOLDER = os.path.dirname(os.path.abspath(__file__)) + '/uploads/' @app.route('/compare_content', methods=['GET', 'POST']) def

我从网站下载输出文件时遇到问题。我使用Flask上传文件,处理它们,生成输出并下载文件

下面您可以看到我收到的错误:

似乎我没有传递文件名,但我不知道如何修复它。 任何帮助或建议都将不胜感激

flask.py中与此问题相关的函数

UPLOAD_FOLDER = os.path.dirname(os.path.abspath(__file__)) + '/uploads/'

@app.route('/compare_content', methods=['GET', 'POST'])
def compare():
    if request.method == 'POST':
        # check if the post request has the file part
        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)
        files = request.files.getlist('file')
        files = [read_xlsx_binary(file) for file in files]
        df_old, df_new = files
        output_filename = run_compare_dfs(UPLOAD_FOLDER, df_old, df_new)

        return redirect(url_for('download_comparison', filename=request.args.get(output_filename)))
    return render_template('index.html', username=session['username'])


def read_xlsx_binary(file):
    filename = os.path.join(UPLOAD_FOLDER, file.filename)
    file.save(filename)
    df = pd.read_excel(filename, engine="openpyxl")
    # os.unlink(filename)
    return df


# Allow user to download the output that was generated by run_compare_dfs() function
@app.route('/uploads')
def download_comparison(filename):
    return send_from_directory(UPLOAD_FOLDER, request.args.get('filename'), as_attachment=True)
比较.py

def run_compare_dfs(upload_folder, df_old=None, df_new=None):

    if df_old is None or df_new is None:
        path_OLD = 'old.xlsx'
        path_NEW = 'new.xlsx'

        df_old = pd.read_excel(path_OLD, engine="openpyxl")
        df_new = pd.read_excel(path_NEW, engine="openpyxl")

        final_df = compare_dfs(df_old, df_new)
        output_filename = to_formatted_excel(upload_folder, final_df)
        return output_filename

您可以通过更改下面的代码来尝试它-
我还没有测试过,但应该对你有用

来自flask导入请求
@app.route(“/uploads”)
def下载_比较():
从_目录返回发送_(上传_文件夹,request.args.get('filename'),如_attachment=True)

检查
输出文件名的值
@OlvinRoght我不确定我是否理解你的意思。我正在使用两个主要函数比较Excel文件比较dfs(比较数据帧)和Excel(创建具有丰富字符串格式的Excel文件),文件名如下:file_name=upload_folder+f'/Compared_dataframes_u{str_now}.xlsx'我想检查函数输出。如果是
None
,则可能会导致异常。目前,new.xlsx和old.xlsx正在正确上载到uploads文件夹,但没有比较的\u DataFrames\uuuxx.xlsx文件,因此是的,您是对的。谢谢您的回答,现在我收到了以下错误:TypeError:预期的str、bytes或os.PathLike对象,非nonetype您可能在
request.args.get('filename')
此处收到错误。请查收