具有传递变量的烧瓶重定向不起作用

时间:2020-05-24 08:50:04

标签: python flask

在烧瓶上用户登录后,我正在尝试进行重定向。

@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。如果没有,请点击链接。

手动单击可以正常工作。 如果我不通过变量“会话”,则自动重定向有效。我该如何解决这个问题?

1 个答案:

答案 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')