【Python/flask】TypeError: ‘**’ object has no attribute ‘is_active’

Python

flask-login使用時に、このエラーに悩まされたので解決方法を記載します。

エラー内容

AttributeError: '***' object has no attribute 'is_active'

***の部分は変わります。

解決方法1:ModelにUserMixinを継承させる

is_activeはUserMixinにある属性のためです。

# ...
from flask_login import UserMixin

class User(Base, UserMixin):
    __tablename__ = 'users'
    # ...

解決方法2:login_userはUserクラスのインスタンスを引数にしているか確認

こちらのページの例にもあるように、login_userの引数はUserクラスのインスタンスである必要があります。

# ...
from flask_login from login_user

@app.route('/login', methods=['POST'])
def login():
    # ...
    user = User()
    login_user(user)
    # ...

私は1,2どちらも行ったらエラー解消しました。

タイトルとURLをコピーしました