2014-12-29 101 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

相关问题