我的代码持续显示:
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 obj或username与该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
的函数。重命名您的函数。