Flask-login is_active不会保持更改

时间:2014-12-14 01:44:08

标签: python flask flask-sqlalchemy flask-login

由于我的关系数据库的工作方式,而不是从我的数据库中删除表以删除帐户,我想通过更改is_active函数在我的User类中返回的内容来取消激活它们。问题是我的User类中的'active'属性不会保持为False - 每次我尝试使用测试帐户登录后,它仍然可以登录,并且通过我已经看过的测试即使我在上一个会话中将其设置为false,current_user._get_current_object()。active也为True。这是我的视图功能:

@app.route('/deleteaccount', methods=['GET', 'POST'])
@login_required
def confirmdeletion():
    form = LoginForm()
    if form.validate_on_submit():
        currentuser = current_user._get_current_object()
        currentuser.active = False
        flash("Account deletion successful")
        return redirect(url_for('frontpage'))
    return render_template('login.html', form=form, delete=True)

以下是我的models.py代码的一部分:

class User(db.Model):
user_email = db.Column(db.Text, primary_key=True)
user_password = db.Column(db.Text)
favorites = db.relationship('Performer', secondary=favorites, backref=db.backref('followers', lazy='dynamic'), lazy='dynamic')
active = db.Column(db.Boolean)

def __init__(self, user_email, user_password):
    self.user_email = user_email
    self.user_password = user_password
    self.active = True
def __repr__(self):
    return '<User {0}>'.format(self.user_email)
def is_authenticated(self):
    return True
def is_active(self):
    return self.active
def is_anonymous(self):
    return False
def get_id(self):
    try:
        return unicode(self.user_email)
    except NameError:
        return str(self.user_email)

再次,我的问题是self.active将不会通过/ deleteaccount进程保持为False。我很感激你的帮助。另外,这是我的第一个问题,所以如果我在这个问题上遗漏了一些重要内容,请告诉我。感谢。

注意:我试图在构造函数中省略self.active = True,并且我尝试在构造函数中定义它,同时将它从我上面定义的位置中删除,并且这些方法都不起作用。

1 个答案:

答案 0 :(得分:1)

您需要提交对模型所做的更改:

def confirmdeletion():
    #...
    if form.validate_on_submit():
        #...
        current_user.active = False
        db.session.commit()
        #...