按照书中代码,到达最后一步,点击确认邮件,一切正常,但是多次点击链接,还是和第一次点击链接一样,并没有提示(‘you have confirmed your account’)
代码如下:
class User(UserMixin, db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(64), unique=True, index=True)
username = db.Column(db.String(64), unique=True, index=True)
role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
password_hash = db.Column(db.String(128))
confirmed = db.Column(db.Boolean,default=False)
def confirm(self, token):
s = Serializer(current_app.config['SECRET_KEY'])
try:
data = s.loads(token)
except:
return False
if data.get('confirm') != self.id:
return False
self.confirmed = True
db.session.add(self)
return True
#下面是view.py中的部分代码
@auth.route('/confirm/<token>')
@login_required
def confirm(token):
if current_user.confirmed:
return redirect(url_for('main.index'))
if current_user.confirm(token):
flash('You have confirmed your account. Thanks')
else:
flash('The confirmation link is invalid or has expired')
return redirect(url_for('main.index'))
想请教各位应该如何修改,才能执行第二个if语句,使其提示‘已确认’?
执行第二个语句的前提是:你current_user的conofirmed属性,在数据库中是False的
所以理论上你只要confirmed属性是False的情况下,会自动触发第二个if
不过我不知道你现在点击确认连接之后,转到的是哪个页面呢?
最好把你点击token之后转到的页面,截个图放上来,这样比较直观
PS:

补充给楼主,关于删除用户的方法
1:用软件比如sqlite expert打开数据库暴力删除
2:如下图
使用python 你的程序名.py shell 进入命令行模式
可以先查出你的用户,我自己数据库就建了一个进行测试
找到用户后,可以以列名username通过filter_by删选出来后,赋值给变量a
然后通过db.session.delete(a)及db.session.commit()来执行数据库的动作。