Python 重定向(url_for())传递参数不';行不通

Python 重定向(url_for())传递参数不';行不通,python,flask,Python,Flask,当我使用redirect和url_传递参数时,它会将它们添加到url中,但不会在html中显示它们。如果我使用render_模板并传递参数,它就会正常工作 我的代码: @app.route("/forgotpass", methods = ["GET", "POST"]) def forgot_password(): if session["logged_in"] == True: retur

当我使用redirect和url_传递参数时,它会将它们添加到url中,但不会在html中显示它们。如果我使用render_模板并传递参数,它就会正常工作

我的代码:

@app.route("/forgotpass", methods = ["GET", "POST"])
def forgot_password():
    if session["logged_in"] == True:
        return redirect(url_for("profile"))
    
    if request.method == "POST":
        email = request.form["username"]
        email = email.lower()

        logins.forgotPassword(email)

        return redirect(url_for("login", error = "We have sent you an email with your new password!"))
    
    elif request.method == "GET":
        return render_template("forgotPassword.html")
HTML:

{{error | default('')}


有人知道如何修复它吗?

这就是
url\u for
的工作原理,您可以将参数/变量传递给它,这些参数/变量将添加到url中,而不是用于显示错误

如果您想向用户显示消息,例如在成功登录后或登录失败时,则应使用消息闪烁:

示例代码,首先从烧瓶导入
flash

@app.route("/forgotpass", methods = ["GET", "POST"])
def forgot_password():
    if session["logged_in"] == True:
        return redirect(url_for("profile"))
    
    if request.method == "POST":
        email = request.form["username"]
        email = email.lower()

        logins.forgotPassword(email)

        flash('We have sent you an email with your new password!')

        return redirect(url_for("login"))
    
    elif request.method == "GET":
        return render_template("forgotPassword.html")
将其放在登录模板中的某个位置:

{% with messages = get_flashed_messages() %}
  {% if messages %}
    <ul class="flashes">
    {% for message in messages %}
      <li>{{ message }}</li>
    {% endfor %}
    </ul>
  {% endif %}
{% endwith %}
{%with messages=get\u flashed\u messages()%}
{%if消息%}
    {消息%中的消息为%s}
  • {{message}}
  • {%endfor%}
{%endif%} {%endwith%}
谢谢!它解决了我的问题
{% with messages = get_flashed_messages() %}
  {% if messages %}
    <ul class="flashes">
    {% for message in messages %}
      <li>{{ message }}</li>
    {% endfor %}
    </ul>
  {% endif %}
{% endwith %}