Проблема при входе пользователя в систему без использования ORM - «Не удалось найти столбец в строке для столбца« is_active »» - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь войти в систему без использования ORM. Мой код выглядит так:

@app.route("/", methods=['GET', 'POST']) 
def index():
        if flask.request.method == 'POST':
            email = request.form.get('email')
            password = flask.request.values.get('password')
            user = db.execute("SELECT * from users WHERE email = :email", {'email': email}).first()
            if user is None or not check_password_hash(user._password, password):
                flash("Invalid password or username")
                return redirect(url_for('login'))
            login_user(user, remember=True)
        return render_template('index.html')

И что я получаю после попытки входа в систему:

AttributeError: Не удалось найти столбец в строке для столбца 'is_active'

говорит, что проблема в строке:

login_user(user, remember=True)

Что-то не так с этим кодом, или проблема в другом месте?

1 Ответ

0 голосов
/ 06 октября 2019

В соответствии с документацией расширение колбы для входа в систему ваш пользовательский класс должен реализовать, среди прочего, свойство is_active.

Поскольку эти требования довольно общие, вы можете использовать UserMixinmixin из flask_login для вашего класса User.

from flask_login import UserMixin

class User(UserMixin, db.Model):
    #  your fields email, etc...
    pass

и запрос объектов User, таких как: user = User.query.filter_by(email=request.form.get('email')).first()

Подробнее об этом можно прочитать в этом превосходном учебном пособии: https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-v-user-logins

...