Flask - 从重定向传递变量到render_template
我有一个关于如何重定向到一个渲染模板的函数的问题。我有两个函数:
@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
就可以在网页上显示这个变量。我尝试了以下方法:
return redirect(url_for('user.login', defaultEmail=email))
在第一个函数中,还有
return render_template('login.html', defaultEmail=email))
但是我遇到了一个错误 NameError: global name 'email' is not defined
。我该怎么做才能实现这个呢?
1 个回答
5
url_for
这个函数应该把 email
通过查询字符串传递。这样的话,login
就可以通过 request.args
来获取这个信息。
email = request.args.get('defaultEmail')