我正在创建一个flask登录系统。我的网址"/档案"是受限制的,所以当任何用户想要访问"/profile"
URL,它们将被抛出到登录页面。
但是登录成功后用户被重定向到URL。
我希望用户在成功登录后应该被抛出到"/profile"
而不是重定向URL。
这是我的登录路径-
@app.route("/login", methods = ["GET" , "POST"])
def login():
if request.method == 'POST':
email = request.form.get('email')
password = request.form.get('pass')
keep_log = request.form.get('keep_log')
if keep_log == "on":
remember_me = True
else:
remember_me = False
user_account = Register_data.query.filter_by(email=email).first()
if user_account:
if check_password_hash(user_account.password,password):
login_user(user_account,remember=remember_me)
flash(f'WELCOME {user_account.name} ')
return redirect(url_for('home'))
else:
flash(f'USERNAME OR PASSWORD IS INCORRECT')
return redirect(url_for('login'))
else:
flash('This email is not registered yet!. Create A New Account To Continue.')
return render_template("2login.html")
我想把这个URL修改为用户来的URL -
return redirect(url_for('home'))
请帮帮我。
Thanks in advance
我想我明白你的问题了。你可能想要这样:
用户(未登录)进入"/profile
";页面。对于尚未登录的用户,他被重定向到"/login
"。登录成功后,他被重定向到"/profile";页面。对吗?
那么在你的代码中:
from flask import redirect, request
from flask_login import current_user
@app.route("/profile")
def profile():
if not current_user.is_authenticated():
# ...
return redirect(url_for("login", next_page="/profile")) # send an url arg to login page
# ...
@app.route("/login")
def login():
# ...
login_user(user_account,remember=remember_me)
flash(f'WELCOME {user_account.name} ')
next_page = request.args.get("next_page") # get the url argument
return redirect(next_page)
#...
这是显式的方式,实际上有一个隐式的方式:你只需要定义next
url参数,它会自动重定向到那个url。
希望这能解决你的问题。