2015-11-18 3 views
0

Существует метод user_loader, который необходимо внедрить в одно приложение. Я сделал это, но мое приложение не может загрузить пользователя, я попытался загрузить пользователя из базы данных с помощью параметра id, но параметр не является идентификатором, это идентификатор объекта. Как это получить, код ниже:Flask Login User Load

.... 

@login_manager.user_loader 
def load_user(id): 

    try: 
     user = User.query.get(int(id)) 
     return user 
    except Exception as e: 
     print e 
     return None 

Спасибо!

+0

«параметр является а не id, это id "... так ли это, или нет, id? Этот код выглядит отлично, что не работает? Пожалуйста, [править], чтобы включить [mcve]. – davidism

ответ

-2

Для всех тех, с той же проблемой, как и выше, то, как я решил, что это, убедившись, что объект SQLAlchemy пользователя возвратил экземпляр объекта идентификатора по предварительному ожиданию себя, как показано ниже:

class User(db.Model, UserMixin): 

    __tablename__ = "users" 

    id = db.Column(db.Integer, primary_key=True) 
    username = db.Column(db.String(80), unique=True) 
    password = db.Column(db.String(100), unique=True) 

    def __init__(self, username, password): 

     self.username = username 
     self.password = password 

    def is_authenticated(self): 
     return True 

    def is_active(self): 
     return True 

    def is_anonymous(self): 
     return False 

    def get_id(self): 
     return unicode(self.id) 

    def __repr__(self): 
     return '<User %r>' % self.username