Python Flask登录是_activewon';我不能保持不变
由于我的关系数据库的工作方式,我不想为了删除帐户而从数据库中删除表,而是想通过更改is_active函数在我的用户类中返回的内容来停用它们。问题是,我的用户类中的属性“active”不会保持为False——每次我尝试在停用测试帐户后使用该帐户登录时,它仍然能够正常登录,并且通过测试,我看到了当前用户。_get_current_object()。active为True,即使我在上一个会话中将其设置为False。以下是我的查看功能:Python Flask登录是_activewon';我不能保持不变,python,flask,flask-sqlalchemy,flask-login,Python,Flask,Flask Sqlalchemy,Flask Login,由于我的关系数据库的工作方式,我不想为了删除帐户而从数据库中删除表,而是想通过更改is_active函数在我的用户类中返回的内容来停用它们。问题是,我的用户类中的属性“active”不会保持为False——每次我尝试在停用测试帐户后使用该帐户登录时,它仍然能够正常登录,并且通过测试,我看到了当前用户。_get_current_object()。active为True,即使我在上一个会话中将其设置为False。以下是我的查看功能: @app.route('/deleteaccount', meth
@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)
以下是my 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)
类用户(db.Model):
user\u email=db.Column(db.Text,主键=True)
用户密码=db.Column(db.Text)
favorites=db.relationship('Performer',secondary=favorites,backref=db.backref('followers',lazy='dynamic'),lazy='dynamic'))
active=db.Column(db.Boolean)
定义初始化(自我、用户电子邮件、用户密码):
self.user\u email=用户\u email
self.user\u password=用户\u密码
self.active=True
定义报告(自我):
返回“”。格式(self.user\u电子邮件)
def已通过身份验证(自身):
返回真值
def处于活动状态(自):
返回自激活状态
def是匿名的(自我):
返回错误
def get_id(自身):
尝试:
返回unicode(self.user\u电子邮件)
除名称错误外:
返回str(self.user\u电子邮件)
再一次,我的问题是self.active不会在/deleteCount过程中保持为False。我很感激你的帮助。另外,这是我在这里的第一个问题,所以如果我在这个问题中遗漏了一些重要的东西,请告诉我。谢谢
注意:我已经尝试在构造函数中省略self.active=True,并且尝试在构造函数中定义self.active=True,而在我上面定义它的地方省略了self.active=True,这两种方法都不起作用 您需要提交对模型所做的更改:
def confirmdeletion():
#...
if form.validate_on_submit():
#...
current_user.active = False
db.session.commit()
#...