python - flask : 'User' object has no attribute 'is_active'

标签 python flask

我有一个关于 flask-login 的问题。我在网站上搜索,但没有找到解决方案...

当我想连接时,我收到这条消息:

属性错误

AttributeError: 'User' 对象没有属性 'is_active'

File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__

return self.wsgi_app(environ, start_response)

File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1820, in wsgi_app

response = self.make_response(self.handle_exception(e))

File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1403, in handle_exception

reraise(exc_type, exc_value, tb)

File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app

response = self.full_dispatch_request()

File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request

rv = self.handle_user_exception(e)

File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception

reraise(exc_type, exc_value, tb)

File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request

rv = self.dispatch_request()

File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request

return self.view_functions[rule.endpoint](**req.view_args)

File "/home/ya2s/UNIVERSITE/WEB/web-serveur/projetvin/tuto/views.py", line 112, in login

login_user(inscrit)

File "/usr/local/lib/python2.7/dist-packages/flask_login.py", line 675, in login_user

if not force and not user.is_active():

AttributeError: 'User' object has no attribute 'is_active'

我在 View 中的代码:

from wtforms import PasswordField
from .models import User
from hashlib import sha256

class LoginForm(Form):
    username = StringField('Username')
    password = PasswordField('Password')

    def get_authenticated_user(self):
        user = User.query.get(self.username.data)
        if user is None :
            return None
        m = sha256()
        m.update(self.password.data.encode())
        passwd = m.hexdigest()
        return user if passwd == user.password else None

from flask.ext.login import login_user, current_user
from flask import request

@app.route("/login/", methods=("GET","POST",))
def login():
    f = LoginForm()
    if f.validate_on_submit():
        inscrit = f.get_authenticated_user()
        if inscrit is not None : 
            login_user(inscrit)
            return redirect(url_for("home"))
    return render_template(
        "login.html",
        form = f)

我的模型:

from flask.ext.login import UserMixin
from app import login_manager

class User(db.Model):
    username = db.Column(db.String(50), primary_key=True)
    password = db.Column(db.String(64))

    def get_id(self):
        return self.username

from .app import login_manager

@login_manager.user_loader
def load_user(username):
    return User.query.get(username)

最佳答案

您的 User 类没有定义任何方法 is_active()。您的用户类需要实现这些 documented methods .

从您的进口来看,您似乎已经打算这样做,但您可以使用 UserMixin类为所需的 User 方法提供默认实现。您应该能够将 UserMixin 添加为您的 User 类的基类:

class User(db.Model, UserMixin):
    username = db.Column(db.String(50), primary_key=True)
    password = db.Column(db.String(64))

    def get_id(self):
        return self.username

关于 python - flask : 'User' object has no attribute 'is_active' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27603212/

相关文章:

python - 保持客户端连接

Python REGEX 匹配字符串并打印

Python 通过 http 发送数据

python - 在 Python flask 中调试请求/响应

python - 检查输入是否是 python 中的单个字母

python - 使用 ElementTree 访问 xml 文件中的元素和标记

python - flask 模板包括不正确的文件

flask - 将 Web 请求上下文透明地传递给 celery 任务

python : Running a loop during a precise duration

在 Kubernetes 中调试 uWSGI