使用' next' flask-login

时间:2016-03-10 15:07:05

标签: python flask flask-login

我正在努力修改cookiecutter Flask应用。在其中我有以下功能,它正常工作:

@blueprint.route("/home/", methods=["GET", "POST"])
def home():
    form = LoginForm(request.form)
    # Handle logging in
    if request.method == 'POST':
        if form.validate_on_submit():
            login_user(form.user)
            flash("You are logged in.", 'success')
            redirect_url = request.args.get("next") or url_for("user.profile")
            return redirect(redirect_url)
        else:
            flash_errors(form)
    return render_extensions("public/home.html", form=form)

在行中:

redirect_url = request.args.get("next") or url_for("user.profile")

我不明白“request.args.get”(" next")'的目的。 。在我的情况下,当我查看请求对象时:

>>> request.args
ImmutableMultiDict([])
>>> request.args.get("next")
>>> 

我一直在阅读文档(https://flask-login.readthedocs.org/en/latest/)和许多stackoverflow问题,但我仍然不确定我理解为什么以及如何' next'使用。

1 个答案:

答案 0 :(得分:1)

下一个参数用于说明客户端应该重定向到哪个URL 成功登录后。它用于涵盖以下场景: 客户输入网址

www.abcd.com/profile

假设只有经过身份验证的用户才能访问此路由(它使用login_required装饰器进行修饰)。 如果客户端未经过身份验证,则会将其重定向到登录页面,并将下一个参数设置为/ profile,以便在身份验证成功时,用户将被重定向到配置文件页面。