我正在研究烧瓶网,并有一些问题
@auth.route('/register', methods=['GET', 'POST'])
def register():
form = RegistrationForm()
if form.validate_on_submit():
user=User(email=form.email.data,username=form.username.data,
password_hash=form.password.data)
db.session.add(user)
db.session.commit()
flash('you can now login')
return redirect(url_for('auth.login'))
return render_template('auth/register.html', form=form)
class User(UserMixin, db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.Integer, 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))
@property
def password(self):
raise AttributeError('password is not a readable attribute')
@password.setter
def password(self, password):
self.password_hash = generate_password_hash(password)
def verify_password(self, password):
return check_password_hash(self.password_hash, password)
def __repr__(self):
return '<user %r>' % self.username
当我输入帐户密码注册时,密码为16。 但是数据库的密码也是16,而不是密码的序列。
我无法理解
答案 0 :(得分:1)
而不是
user=User(email=form.email.data,username=form.username.data,
password_hash=form.password.data)
试试这个
user=User(email=form.email.data,username=form.username.data,
password=form.password.data)
或者如果你想100%确定那么
user=User(email=form.email.data,username=form.username.data)
user.password = form.password.data
答案 1 :(得分:0)
您不会在寄存器功能中计算哈希值。您只需将表单“password”直接传递给password_hash字段。