在烧瓶上用户登录后,我正在尝试进行重定向。
@app.route('/login', methods=['GET', 'POST'])
def login():
if g.user:
return redirect(url_for('index'))
if request.method == 'POST':
user = request.form['Editbox1']
passwd = request.form['Editbox2']
test = ldap.bind_user(user, passwd)
if test is None or passwd == '':
return 'Invalid credentials'
else:
session['user_id'] = request.form['Editbox1']
return redirect(url_for('entry_page'), session['user_id'])
return render_template('index.html')
这个不能自动重定向,浏览器只显示消息:
您应自动重定向到目标URL:/ entry。如果没有,请点击链接。
手动单击可以正常工作。 如果我不通过变量“会话”,则自动重定向有效。我该如何解决这个问题?
答案 0 :(得分:0)
您必须将url_for()
的参数直接放在要引用的url函数之后,并为参数指定在下一个函数调用中使用的名称,如下所示:
return redirect(url_for('entry_page', user_uid=session['user_uid']))
因此您的完整代码应如下所示:
@app.route('/login', methods=['GET', 'POST'])
def login():
if g.user:
return redirect(url_for('index'))
if request.method == 'POST':
user = request.form['Editbox1']
passwd = request.form['Editbox2']
test = ldap.bind_user(user, passwd)
if test is None or passwd == '':
return 'Invalid credentials'
else:
session['user_id'] = request.form['Editbox1']
return redirect(url_for('entry_page', user_uid=session['user_id']))
return render_template('index.html')