我正在努力修改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'使用。
答案 0 :(得分:1)
下一个参数用于说明客户端应该重定向到哪个URL 成功登录后。它用于涵盖以下场景: 客户输入网址
www.abcd.com/profile
假设只有经过身份验证的用户才能访问此路由(它使用login_required装饰器进行修饰)。 如果客户端未经过身份验证,则会将其重定向到登录页面,并将下一个参数设置为/ profile,以便在身份验证成功时,用户将被重定向到配置文件页面。