Flask - 将变量从重定向传递到 render_template

Jas*_*oks 3 python redirect flask

我有一个关于重定向到呈现模板的函数的问题。我有两个功能:

@user.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'GET':
        return render_template('register.html')
    email = request.form['email']
    if User.query.filter(User.email == email).first() is not None:
        flash('Account already exists for this email address!')
        return redirect(url_for('user.login'))
Run Code Online (Sandbox Code Playgroud)

@user.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    return "Hello"
Run Code Online (Sandbox Code Playgroud)

在第一个函数中,return redirect(url_for('user.login'))我想通过该重定向传递电子邮件变量,这样我就可以render_template在第二个函数中在 HTML 页面上显示该变量。我尝试了以下方法:

return redirect(url_for('user.login', defaultEmail=email))
Run Code Online (Sandbox Code Playgroud)

在第一个函数中和

return render_template('login.html', defaultEmail=email))
Run Code Online (Sandbox Code Playgroud)

但它给了我NameError: global name 'email' is not defined。我该怎么做呢?

dir*_*irn 5

url_for通过email查询字符串。它可以作为login的一部分进行访问request.args

email = request.args.get('defaultEmail')
Run Code Online (Sandbox Code Playgroud)