2014-12-29 100 views
0

我嘗試運行我的應用程序登錄但是當我提交表單來檢查用戶ID和電子郵件時,我得到這個error.AttributeError:'用戶'對象沒有任何屬性'IS_ACTIVE' 所以,謝謝你幫AttributeError:'用戶'對象沒有屬性'is_active'

rv = self.dispatch_request() 

    File "/home/peg/flask/venv/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request 

    return self.view_functions[rule.endpoint](**req.view_args) 

    File "/home/peg/flask/app/view.py", line 45, in login 

    login_user(user_in_db, remember = form.remember_me.data) 

    File "/home/peg/flask/venv/lib/python2.7/site-packages/flask_login.py", line 675, in login_user 

    if not force and not user.is_active(): 

view.py

@app.route('/login', methods = ['GET', 'POST']) 
def login(): 
    form = LoginForm() 
    #checks if the user is authernticated 
    #or not, if yes it skips authentfic. 
    if current_user is not None and current_user.is_authenticated(): 
      return redirect(request.args.get('next') or url_for('index')) 
    #does not allow user to use get method 
    if request.method == 'GET': 
      return render_template('login.html', 
        form = form, 
        title = 'Login') 

    #taking the user submitted data and checking if it exists in the database 
    user_in_db = User.query.filter_by(name=form.name.data.lower()).first() 

    #if the username is not wrong 
    if user_in_db is not None and user_in_db != False: 
      if form.email.data != user_in_db.email: 
        flash('email is incorrect') 
        return redirect(url_for('login')) 
      #here I got error 
      login_user(user_in_db, remember = form.remember_me.data) 
      return redirect(request.args.get('next') or url_for('index')) 
    else: 
     flash('Username does not exists') 
     return render_template('login.html', 
      form = form, 
      title = 'Login') 

model.py

class User(db.Model): 
    __tablename__ = "Contacts" 
    id = db.Column(db.Integer, primary_key = True) 
    name = db.Column(db.String(50)) 
    email = db.Column(db.String(50)) 
    age = db.Column(db.Integer) 

def __init__(self, name, email, age): 
    self.name = name 
    self.email = email 
    self.age = age 

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.name) 
+1

在model.py中''def'是否正確縮進?它們應該在用戶類中(在每個「def」之前添加一個選項卡)。 – Doobeh

+0

是的他們@Doobeh – Linda

回答

0

你的縮進是錯誤的。您定義了模塊級功能,而不是在User上定義方法。

class User(db.Model): 
    __tablename__ = "Contacts" 
    id = db.Column(db.Integer, primary_key = True) 
    name = db.Column(db.String(50)) 
    email = db.Column(db.String(50)) 
    age = db.Column(db.Integer) 

    def __init__(self, name, email, age): 
     self.name = name 
     self.email = email 
     self.age = age 

    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.name) 
+0

現在我得到錯誤提高ValueError('查看功能沒有返回響應')你能幫助我嗎? @dirn – Linda

+1

這是一個完全不同的問題,應該*作爲一個單獨的問題被詢問,但這意味着無論您正在訪問哪個端點都有一個不以「return」結尾的路徑。 – dirn

相關問題