【问题标题】:Flask url_for() doesn't take a second argument even though it's requiredFlask url_for() 不需要第二个参数,即使它是必需的
【发布时间】:2021-12-20 09:10:07
【问题描述】:

我有以下路线

@app.route("/dashboard/survey/<int:survey_id>/responses",  methods=["GET"])
def responses(survey_id):
    responses = db.session.query(Survey, Responses).join(Responses).filter(Survey.id == survey_id).filter(
        Responses.lan_code == "en").all()

    return render_template('responses.html', responses=responses, kws=kws)


@app.route("/dashboard/survey/<int:survey_id>/responses/delete/<int:r_id>/<participant_folder>", methods=["POST"])
def delete_response(survey_id, r_id, participant_folder):
    #response = Responses.query.get_or_404(r_id)
    #db.session.delete(response)
    #db.session.commit()
    #pfolder = participant_folder.replace("-", "/")
    #print(pfolder)
    #shutil.rmtree('qdas/static/audioResponses/' + pfolder, ignore_errors=True)
    return redirect(url_for('responses', survey_id))

当我尝试重定向到“响应”时,我收到以下错误:

TypeError: url_for() 接受 1 个位置参数,但给出了 2 个

如果从参数中删除survey_id,我会收到此错误:

werkzeug.routing.BuildError:无法为端点“响应”构建 url。您是否忘记指定值 ['survey_id']?

有没有办法解决这个问题?

【问题讨论】:

    标签: flask flask-restful werkzeug url-for


    【解决方案1】:

    你需要改变这一行,

    return redirect(url_for('responses', survey_id))
    

    到这个。

    return redirect(url_for('responses', survey_id=survey_id))
    

    这是因为url_for 只接受一个带有可选参数数量的端点。

    【讨论】:

      猜你喜欢
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      • 2019-06-27
      • 2011-11-19
      • 1970-01-01
      相关资源
      最近更新 更多