2015-06-26 134 views
3

我在我的應用程序中遇到Login_manager問題。該錯誤是在這裏AttributeError:'Flask'對象沒有屬性'login_manager' - Login_Manager

def authenticate(form): 
    if form.validate_on_submit(): 
     try: 
      user = session.query(User).filter(User.email == form.email.data).first() 
     except :# models.DoesNotExist: 
      flash("Your email or password does not match !", "error") 
     else : 
      if check_password_hash(user.password,form.password.data): 
       login_user(user) 
       flash("You've been logged in", "success") 
       return redirect(url_for('index')) 
      else : 
       flash("Your email or password does not match !", "error") 
    return render_template('login.html',form = form) 

引發的問題是提高在

login_user(用戶)

我login_manager配置了autheticate低於如下。

if __name__ == '__main__': 

    app.secret_key = 'Innalhamdulillah.nahmaduhu.taalanastainubihi.wanastagfiruh!' 
    app.run(debug = DEBUG, host=HOST, port= PORT) 

    login_manager = LoginManager() 
    login_manager.init_app(app) 
    login_manager.login_view = 'login' 

    @login_manager.user_loader 
    def load_user(userid): 
     try: 
      return session.query(User).filter(User.id == userid).first() 
     except models.DoesNotExist : 
      return None 

,並在我的聲明

from flask.ext.login import LoginManager,login_user 

請我如何解決這個問題,是什麼原因?我如何更好地理解它?我懷疑我的def load_user(userid): bcos我不是很清楚,這是我的第一個。任何幫助,將不勝感激。

回答

10

在初始化LoginManager之前運行您的應用程序。所以你應該有:

app.secret_key = 'xxxxyyyyyzzzzz' 

login_manager = LoginManager() 
login_manager.init_app(app) 
login_manager.login_view = 'login' 

app.run(debug = DEBUG, host=HOST, port= PORT)