由于我的关系数据库的工作方式,而不是从我的数据库中删除表以删除帐户,我想通过更改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,并且我尝试在构造函数中定义它,同时将它从我上面定义的位置中删除,并且这些方法都不起作用。
答案 0 :(得分:1)
您需要提交对模型所做的更改:
def confirmdeletion():
#...
if form.validate_on_submit():
#...
current_user.active = False
db.session.commit()
#...