我有以下代码:
@app.route("/", methods=["GET", "POST"])
def login():
if request.method == "GET":
return render_template("login.html")
elif request.method == "POST":
username, password = request.form.get("username"), request.form.get("password")
if validate_login(username, password):
return redirect("/home.html")
else:
return render_template("login.html", login_message="Invalid username or password!")
使用以下
home.html
文件:
{% extends "layout.html" %}
{% block body %}
Hello {{ username }}, your password is {{ password }}!
{% endblock %}
这里的重点是,我正在寻找一些使用
home.html
函数将变量传递给 redirect
的方法(就像代码的最后一行 render_template
一样),但是经过一些激烈的谷歌搜索后,我仍然可以'找不到办法这样做。有人知道该怎么做吗?
我假设您使用 Flask 作为路由引擎。
如果是这样,您可以重定向到新路由,而不是重定向到裸露的 html url。比如:
if validate_login(username, password):
return redirect("/home/{username}")
然后让该路由正常使用变量渲染 home.html 模板:
@app.route('/home/<username>')
def user_home(username):
return render_template('home.html', username=username)
对于您需要的其他变量,您可以让
user_home function
检索它们并将它们传递给模板,或者使用一些中间件函数向用户的请求添加其他数据。