AttributeError: у объекта 'str' нет атрибута 'is_active' - PullRequest
0 голосов
/ 10 марта 2020

В моем приложении я пытаюсь добавить аутентификацию пользователя, используя flask -login. Я получаю сообщение об ошибке AttributeError: у объекта 'str' нет атрибута 'is_active'. Я сослался на какую-то ссылку PYTHON - Flask: у объекта «Пользователь» нет атрибута «is_active» и попробовал метод. Он не работает. models.py

from flask_login import UserMixin
from app import login_manager

class Login(db.Model,UserMixin):
    "Creates username and password"
    id = db.Column(db.Integer,primary_key=True,nullable=False)
    username = db.Column(db.String,nullable=False)
    password = db.Column(db.String,nullable=False)


@login_manager.user_loader
def load_user(user_id):
    return Login.query.get(int(user_id))

мой rout.py

def validate(username):
    "Validate the username and passowrd"
    exists = db.session.query(db.exists().where(Login.username == username)).scalar()        
    print(exists)
    return exists


def password_validate(password):
    "Validate the username and passowrd"
    exists = db.session.query(db.exists().where(Login.password == password)).scalar() 

    return exists

@app.route('/login', methods=['GET', 'POST'])
def login():
    error = None  
    if request.method == 'GET':
        return render_template('login.html', error=error)          
    if request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')
        data = {'username':username,'password':password}
        completion = validate(username)
        if completion ==False:
            print("I am first false")
            error = 'error.'
        else:
            print("I am first else")
            password_check = password_validate(password)
            if password_check ==False:
                print("I am second if")
                error = 'error.'
            else:
                print("I am second else")
                login_user(username)
                error = 'Success'
        api_response = {'data':data,'error':error}
        return jsonify(api_response)

мой app.py

from flask_login import LoginManager
login_manager = LoginManager()
login_manager.init_app(app)

Но я столкнулся с еще одной проблемой Невозможно import flask -login error in from flask_login import LoginManager

1 Ответ

0 голосов
/ 10 марта 2020

Я включил строки внутри условия else в router.py

user = Login()
user.name=username
user.password=password
print("I am second else")
login_user(user)
error = 'Success'

, а также в models.py

@login_manager.user_loader
def load_user(user_id):
    user = Login()
    user.id = Login.id
    user.username = Login.username
    user.password = Login.password
    return user
...