AttributeError:“ NoneType”对象没有属性“ get_reset_token”

时间:2020-04-22 18:29:49

标签: flask

为什么为什么在send_reset_email(user)函数上给我属性错误?错误是(AttributeError:'NoneType'对象没有属性'get_reset_token')?

class User(db.Model,UserMixin):
    id = db.Column(db.Integer,primary_key=True)
    username = db.Column(db.String(20),unique=True,nullable=False)
    email = db.Column(db.String(120),unique=True,nullable=False)
    image_file = db.Column(db.String(20),nullable=False,default='default.jpg')
    password = db.Column(db.String(60),nullable=False)
    posts = db.relationship('Post',backref='author',lazy=True)

    def get_reset_token(self,expires_sec=1800):
        s= Serializer(app.config['SECRET_KEY'],expires_sec)
        return s.dumps({'user_id': self.id}).decode('utf-8')`

def send_reset_email(user):
token = user.get_reset_token()
msg = Message('password reset request',sender ='noreply@demo.com',recipients=[user.email])
msg.body=f'''TO reset pasword visit following link:{url_for('reset_token',token=token,_external=True)} If you did not make this request simply
     ignore this email '''

@app.route("/reset_password",methods=['GET', 'POST'])
def reset_request():
    if current_user.is_authenticated:
        return redirect(url_for('home'))
    form =RequestResetForm()
    if form.validate_on_submit:
        user =User.query.filter_by(email=form.email.data).first()
        send_reset_email(user)
        flash('email has been sent with instruction to reset','info')
        return redirect(url_for('login'))
    return render_template('reset_request.html',title='request update',form=form)

0 个答案:

没有答案