在我的应用程序中,我试图使用flask-login添加用户身份验证。我收到错误AttributeError:'str'对象没有属性'is_active'。我已经引用了一些链接PYTHON - Flask : 'User' object has no attribute '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))
我的routes.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)
但是我还面临另一个问题Unable to import flask-login error in from flask_login import LoginManager
我已将routes.py中else条件内的行包括在内>
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