我试图理解为什么在我登录后,一旦我重定向到另一个不同于我登录的登录页面。我不认为这个bug在登录视图中,我很确定这与更微妙的东西相关联。以下代码无论如何都与登录管理有关。
@app.route("/login", methods=["GET", "POST"])
def login():
form = LoginForm()
if form.validate_on_submit():
user = load_user(form.username.data)
if user is not None and user.verify_password(form.password.data):
if form.remember_me.data == True:
login_user(user, remember=True)
else:
login_user(user)
flash('Logged in successfully.')
next = request.args.get('next')
return redirect(next or url_for('home'))
else:
flash('Wrong username and/or password')
form.username.data = request.args.get('username')
return render_template('login.html', form=form, title='Login')
@lm.user_loader
def load_user(username):
user = User.query.filter_by(username=username)
if user.count()!=0 :
return user.first()
else:
return None
@app.route("/logout")
@login_required
def logout():
logout_user()
flash('Logged out!')
return to_index()
我不知道代码的其他部分对帖子有用,因为我对问题本身的起源非常困惑。
答案 0 :(得分:2)
user_loader
函数采用id,而不是名称。您将ID值与用户名列进行比较,但未获得任何结果。使用get
方法按主键(id)查询User
,如果不存在具有该ID的用户,则返回None。
@login_manager.user_loader
def user_loader(id):
return User.query.get(id)