flask_login.user在向其传递用户对象时出错



我的代码持续显示:

TypeError: login_user() takes 0 positional arguments but 1 was given

但在flask文档中,它明确接受一个对象作为其参数。

我的登录代码:

@app.route('/login',methods=['GET','POST'])
def login_user():
form = LoginForm()
if request.method=='POST':
attemptedUser=User.query.filter_by(uusername=form.username.data).first()
attemptedPassword=form.password.data
if attemptedUser and attemptedUser.comparePassword(attemptedPassword=form.password.data):
login_user(attemptedUser)
return redirect(url_for("index"))
else:
return "password not correct"
if request.method=='GET':
return render_template("login.html",form=form)

我还怀疑,给它attemptedUser objusername与该attemptedUser关联是否会产生影响,或者它是否会起作用?

我的Models.py文件:

from market import db ,login_manager
from flask_login import UserMixin
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
class User(db.Model,UserMixin):
uid=db.Column(db.Integer(),primary_key=True)
uusername=db.Column(db.String(30),nullable=False,unique=True)
upassword =db.Column(db.String(30),nullable=False,unique=True)
uaddress= db.Column(db.String(30))
uphone=db.Column(db.Integer(),nullable=False,unique=True)
# def __repr__(self):
#     return f'{self.uusername}'

@property 
def password(self):
return self.password
def comparePassword(self,attemptedPassword):
return attemptedPassword==self.upassword

假设您在上面没有显示的代码中导入了login_user

def login_user():

正在屏蔽它。当代码稍后进行时

login_user(attemptedUser)

它正在获取您的函数,而不是来自flask_login的函数。重命名您的函数。

最新更新