Flask - 将变量从Redirect传递到render_template

时间:2014-04-12 03:49:05

标签: 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'))

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

在第一个函数中,使用行return redirect(url_for('user.login')),我想传递带有该重定向的电子邮件变量,因此我可以在第二个函数中使用render_template在HTML页面上显示该变量。我尝试了以下方法:

return redirect(url_for('user.login', defaultEmail=email))
第一个函数中的

return render_template('login.html', defaultEmail=email))

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

1 个答案:

答案 0 :(得分:4)

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

email = request.args.get('defaultEmail')