builtins.AttributeError: у объекта 'NoneType' нет атрибута 'check_password' - PullRequest
0 голосов
/ 17 декабря 2018

Это мой файл aap.py. Если я предоставляю письмо и пароль, которые не зарегистрированы, они также могут перейти на страницу входа в систему.В этой строке выдается ошибка "if user.check_password (form.password.data) и пользователь не None:" Любая помощь будет оценена.

@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():

        user = User.query.filter_by(email=form.email.data).first()

        if user.check_password(form.password.data) and user is not None:

            login_user(user)
            flash('Logged in successfully.')

            # If a user was trying to visit a page that requires a login
            # flask saves that URL as 'next'.
            next = request.args.get('next')

            # Checking if that next exists, otherwise we'll go to
            # the welcome page.
            if next == None or not next[0] == '/':
                next = url_for('welcome_user')

            return redirect(next)
    return render_template("login.html", form=form)    enter code here

1 Ответ

0 голосов
/ 17 декабря 2018

Компилятор Python перемещается слева направо, что означает, что когда дело доходит до проверки нескольких условий с помощью только оператора and, компилятор Python сначала проверяет первое условие, а если оно истинно, он переходит ко второму условию, ии так далее для последующих условий.

В результате, если вы измените данную строку на что-то вроде ниже, ваш код начнет работать так, как задумано:

if user is not None and user.check_password(form.password.data):
...