Flask - Resolve "AttributeError: object has no attribute 'is_active'"
by
Jeremy Canfield |
Updated: March 19 2023
| Flask articles
Let's say something like this is being returned.
AttributeError: 'users' object has no attribute 'is_active'
This occurs when attempting to login a user using Flask LoginManager.Check out my article on Getting Started with Flask Login. This occurs when current_user.is_active returns False and can be resolved by adding the def is_active(self) function in your model.
from sqlalchemy import func
from flask_login import UserMixin
from . import db
class users(db.Model, UserMixin):
date_created = db.Column(db.DateTime(timezone=True), default=func.now())
date_updated = db.Column(db.DateTime(timezone=True), onupdate=func.now())
id = db.Column(db.Integer, nullable=False, unique=True, primary_key=True)
email = db.Column(db.String(50), nullable=False, unique=False)
password = db.Column(db.String(100), nullable=False, unique=False)
def is_active(self):
return True
Or by including remember=False in login_user.
import os, re, sqlite3
from flask import Blueprint, render_template, flash, request, Markup, redirect, url_for, session
from flask_login import login_user, login_required, logout_user, current_user
from . import db
from werkzeug.security import check_password_hash
@views.route('/SignIn', methods=['GET', 'POST'])
def signin():
from .models import users
data = users.query.filter_by(email=request.form.get('email')).first()
password_hash = check_password_hash(data.password, request.form.get('password'))
login_user(data, remember=False)
print("current_user.is_authenticated = " + str(current_user.is_authenticated))
flash('Successfully Signed In' ,category='primary')
return redirect(url_for('views.home'))
Did you find this article helpful?
If so, consider buying me a coffee over at