Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
flask login_所需的下一个参数不起作用_Flask_Flask Login - Fatal编程技术网

flask login_所需的下一个参数不起作用

flask login_所需的下一个参数不起作用,flask,flask-login,Flask,Flask Login,我遵循miguel grinberg的教程,现在我正在应用我在一个辅助项目中学到的东西,但在所有情况下,我遇到了一个问题,起初我忽略了这个问题,认为这是我的错误,但经过调查,我找不到为什么会发生这种行为,问题是,当我试图转到网站内的任何url时,未登录登录屏幕出现,但之后原始请求的页面未成功加载,并出现BuildError异常 下面是我的代码示例 @app.route('/login', methods=['GET', 'POST']) def login(): if current_user.

我遵循miguel grinberg的教程,现在我正在应用我在一个辅助项目中学到的东西,但在所有情况下,我遇到了一个问题,起初我忽略了这个问题,认为这是我的错误,但经过调查,我找不到为什么会发生这种行为,问题是,当我试图转到网站内的任何url时,未登录登录屏幕出现,但之后原始请求的页面未成功加载,并出现BuildError异常

下面是我的代码示例

@app.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
    return redirect(url_for('index'))

form = LoginForm()

if form.validate_on_submit():
    user = User.query.filter_by(username= form.username.data).first()
    if user is None or not user.check_password(form.password.data):
        return redirect(url_for('login'))
    login_user(user)
    next_page = request.args.get('next')
    if not next_page or url_parse(next_page).netloc != '':
        return redirect(url_for('index'))

    return redirect(url_for(next_page))

return render_template('login.html', form=form)
正如您所看到的,我正在获取下一个参数,并对它是否存在进行一些安全检查,然后重定向到下一个页面url,但发生的情况是出现了构建错误,例如

BuildError: Could not build url for endpoint u'/user/4556'. Did you mean
'user' instead?
而用户视图函数如下所示

@app.route('/user/<username>', methods=['GET'])
@login_required
def user(username):
    ....   
@app.route('/user/',方法=['GET'])
@需要登录
def用户(用户名):
....   
而不是

return redirect(url_for(next_page))
你可能想要

return redirect(next_page)
您的“next”参数看起来像“/user/4556”,但您没有名为“/user/4556”的端点,因此您不想将其传递给
url\u。直接将字符串传递到重定向就足够了。

而不是

return redirect(url_for(next_page))
你可能想要

return redirect(next_page)

您的“next”参数看起来像“/user/4556”,但您没有名为“/user/4556”的端点,因此您不想将其传递给
url\u。直接将字符串传递到重定向就足够了。

谢谢您的回答,但是我如何在没有url的情况下在重定向中传递参数?谢谢您的回答,但是我如何在没有url的情况下在重定向中传递参数?