PYTHON - Flask:“用户”对象没有属性“is_active”

Yas*_*gas 1 python flask

我在烧瓶登录方面遇到问题。我在网站上搜索过,但没有找到解决方案...

当我想要连接时,我收到以下消息:

属性错误

AttributeError:“用户”对象没有属性“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'
Run Code Online (Sandbox Code Playgroud)

我在视图中的代码:

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)
Run Code Online (Sandbox Code Playgroud)

我的模型:

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)
Run Code Online (Sandbox Code Playgroud)

mha*_*wke 5

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

从您的导入来看,您似乎已经打算这样做,但您可以使用该类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
Run Code Online (Sandbox Code Playgroud)