如何使用 Jinja 语法在 HTML 中重定向期间传入变量?

问题描述 投票:0回答:1

我有以下代码:

@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
一样),但是经过一些激烈的谷歌搜索后,我仍然可以'找不到办法这样做。有人知道该怎么做吗?

python html python-3.x flask jinja2
1个回答
0
投票

我假设您使用 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
检索它们并将它们传递给模板,或者使用一些中间件函数向用户的请求添加其他数据。

© www.soinside.com 2019 - 2024. All rights reserved.