首页 > 解决方案 > 在 Flask 中使用 LOGIN_USER() 变得很棘手

问题描述

我是 Flask 的新手,我一直在尝试实现 login_user,但它不起作用。我已经阅读了文档,但我无法让它工作。这是我的模型

class User(db.Model,UserMixin):
    __tablename__ = "User"
    id = db.Column(db.Integer, primary_key= True)
    username = db.Column (db.String, nullable=False)
    email = db.Column (db.String, unique=True, nullable=False)
    password = db.Column(db.String, nullable=False)
    city= db.Column(db.String)
    review = db.relationship('Review',backref='User',lazy=True)

    def is_active(self):
        return self.active

    def is_anonymous(self):
        return False

    def is_authenticated(self):
        return True

    def get_id(self):
        return self.id

和我的登录定义

@app.route("/login", methods= ["POST", "GET"])
def login():
    form=LoginForm()
    if form.validate_on_submit():
        email=form.email.data
        password_login= form.password.data
    #make sure user exists
        user= db.execute('''SELECT * FROM "User" WHERE email = :email''',{"email": email}).fetchone()
        if user:
            if check_password_hash(user.password,password_login):
                login_user(user, form.remember.data)
                return redirect(url_for("dashboard")) 
        return '<h1> Invalid user </h1>'    
    return(render_template("login.html", form=form))

我在 app.py 中有加载器。我仍然无法确定是否应该将其放入模型中。

@login_manager.user_loader
def load_user(user_id):
    try:
        return User.query.get(user_id)
    except:
        return None

我得到了这个错误的大部分

login_user(user, form.remember.data) File "C:\Users\COMPAQ\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask_login\utils.py", line 166, in login_user if not force and not user.is_active: AttributeError: Could not locate column in row for column 'is_active'

如果错误很明显,我深表歉意,但我仍在努力解决 Flask 登录系统的逻辑问题 提前致谢!

标签: pythonflask-sqlalchemyflask-wtforms

解决方案


我弄错了行,是查询。将其替换为:

user = User.query.filter_by(email=request.form.get('email')).first()

在这里找到答案http://quabr.com/58256369/problem-with-logging-user-in-without-using-orm-could-not-locate-column-in-row

希望它在未来对其他人有所帮助!


推荐阅读