2015-12-19 3 views
0

У меня есть проект фляги, который я начал 5 месяцев назад и остановился после регистрации и проверки подлинности. Теперь я хочу продолжить, после новых инсталляций, теперь получаю титульную ошибку с логином/аутентификацией. НижеAttributeError: объект «NoneType» не имеет атрибута «пароль»

форма счета

class LoginForm(Form): 
    email = StringField('Enter email', validators=[DataRequired(),Email()]) 
    password = PasswordField('Password', validators=[DataRequired()]) 
    remember = BooleanField('Remember Password') 

В файле маршрута

@app.route('/',methods=['GET', 'POST']) 
@app.route('/index', methods=['GET', 'POST']) 
def index(): 
    formLogin = AccountForm.LoginForm() 
    if request.method == 'GET' : 
     return render_template('index.html',formLogin=formLogin) 
    if request.method == 'POST' : 
     if request.form.get('login', None) == 'Login' : 
      return AccountController.authenticatePopUpLogin(formLogin,'index') 

В моей AccountController

def authenticatePopUpLogin(formLogin,route): 
    if formLogin.validate_on_submit(): 
     try: 
      user = session.query(User).filter(User.email == formLogin.email.data).first() 
except :# models.DoesNotExist: 
      flash("Your email or password does not match !", "error") 
      return render_template('login.html',form=formLogin,formLogin = formLogin) 
     else : 
      if check_password_hash(user.password,formLogin.password.data): 

Мой Пользователь импортируется из моей модели класса

class User(UserMixin , Base): 
    __tablename__ = 'users' 
    id = Column(Integer, primary_key=True) 
    title = Column(CHAR(3), nullable = False) 
    firstname = Column(String(100), nullable = False) 
    lastname = Column(String(100), nullable = False) 
    DateOfBirth = Column(ArrowType, default = arrow.utcnow()) 
    username = Column(String(100), nullable = False, unique = True) 
    email = Column (String(50), nullable =False, unique = True) 
    password = Column(String(100), nullable = False) 
    ... 

Затем он выдает ошибку выше. Я подозреваю, что ошибка здесь check_password_hash(user.password,formLogin.password.data):. Моя проверка формы работает, однако она порождает ошибку при пустом и т. Д.

Я подтвердил, что поле пароля существует и в моем db. Пожалуйста, где я ошибаюсь?

+0

Эта строка 'if check_password_hash (user.password, formLogin.password.data):', 'user' имеет нижний регистр, тогда как предыдущий верхний регистр. –

+0

Привет 'Пользователь' в' session.query (User) .filter (User.email == formLogin.email.data) .first() 'из моего класса User. Однако «пользователь» находится из переменной 'user' (т.е.' user = session.query (User) .filter (User.email == formLogin.email.data) .first() '. Я думаю, что они оба ниже случаев сэр. – brickleberry

ответ

3

Согласно документации first метода:

Return the first result of this Query or None if the result doesn’t contain any row.

Таким образом, вы должны проверить, если user является None.

Смежные вопросы