У меня есть проект фляги, который я начал 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. Пожалуйста, где я ошибаюсь?
Эта строка 'if check_password_hash (user.password, formLogin.password.data):', 'user' имеет нижний регистр, тогда как предыдущий верхний регистр. –
Привет 'Пользователь' в' session.query (User) .filter (User.email == formLogin.email.data) .first() 'из моего класса User. Однако «пользователь» находится из переменной 'user' (т.е.' user = session.query (User) .filter (User.email == formLogin.email.data) .first() '. Я думаю, что они оба ниже случаев сэр. – brickleberry