Python 重定向(url_for())传递参数不';行不通
当我使用redirect和url_传递参数时,它会将它们添加到url中,但不会在html中显示它们。如果我使用render_模板并传递参数,它就会正常工作 我的代码: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
@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 %}