次のように、Flask-Login で動作するユーザー関数を作成して使用しようとしています。
class User(db.Model):
username = db.Column(db.String(80), primary_key=True)
passhash = db.Column(db.String(160))
posts = db.relationship('Idea', backref='user')
def __init__(self, username, password):
self.username = username
self.passhash = generate_password_hash(password)
def __str__(self):
return "User: " + self.username + " Hash: " + self.passhash
# Managing passwords using Werkzeug security library
def check_password(self, password):
return check_password_hash(self.passhash, password)
# Necessary functions for Flask-Login session management
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
# Anonymous users aren't supported
return False
def get_id(self):
return unicode(self.username)
ただし、このコードを使用しようとすると、次のエラーが表示されます。
AttributeError: 'User' オブジェクトに属性 'is_active' がありません
メソッドを手動で実装しているにもかかわらず、この回答に出くわし、機能を からclass User(db.Model)
に変更してこれを修正しようとしました。class User(db.Model, UserMixin)
これを行うと上記のエラーが解消されましたが、次のことがわかり始めました。
NotImplementedError:
id
属性がありません - オーバーライドget_id
ここで何が間違っていますか?という名前の属性はありませんが、(上記のように) 関数id
を設定しました。get_id
上記の機能が取り上げられていない特定の理由はありますか?
特に myuser = User.query.get(form.username.data)
を toに渡すと、エラーが発生しlogin_user()
ます。