flask 验证登录问题
class User(db.Model):
__tablename__ = "user"id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(100), unique=True)
pwd = db.Column(db.String(510))
addtime = db.Column(db.DateTime, index=True, default=datetime.now)
userlogs = db.relationship("UserLog", backref="user") # 会员日志外键关联
def __repr__(self):
return "<User %r>" % self.name
def check_pwd(self, pwd):
return check_password_hash(self.pwd, pwd)
def login():
form = LoginForm()
if form.validate_on_submit():
data = form.data
user = User.query.filter_by(name = data["name"]).first()
print(user)
print(data)
if user.check_pwd(data['pwd']):
userlog = UserLog(
user_id=user.id,
ip=request.remote_addr
)
db.session.add(userlog)
db.session.commit()
session["name"] = user.name
return redirect(url_for("home.user"))
return render_template("home/login.html", form=form)
如图 经过调试我发现,
和数据库是可以连上的,但是user这句出现了问题,导致user打印出来是None,所以导致错误,请问是哪里的问题呀,是不是我数据库的问题?现在的错误是输入任何账号密码都到错误页面,而不是密码验证错误,真是头疼
回答:
pring(data["name"])
看下取到用户名没有?另外手动用python shell的方式执行User.query.filter_by(name = "123").first()
能正常返回user对象吗?如果还不行debug一下User.query这句代码。
回答:
在if user.check_pwd(data['pwd']):
判断之前,需要判断user
是不是真的取到了。
if user and user.check_pwd(data['pwd']):
以上是 flask 验证登录问题 的全部内容, 来源链接: utcz.com/p/937981.html