1、用户模型
class User(db.Model, UserMixin):
__tablename__ = 'users'
id = db.Column(db.Integer(), primary_key=True)
username = db.Column(db.String(), unique=True)
password = db.Column(db.String(), default='123456')
name = db.Column(db.String)
grade = db.Column(db.String)
role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
role = db.relationship('Role', back_populates='user')
# pythonic使用@property将方法变成属性
def set_password(self, password):
self.password = generate_password_hash(password)
def check_password(self, value):
return check_password_hash(self.password, value)
def __repr__(self):
return self.username
# 回调函数
@staticmethod
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
2、flask-admin添加用户记录
添加一个用户记录发现,密码并没有被加密!!
3、使用hash加密密码
解决方法:在我们自定义的视图中是实现函数
on_model_change
class UserView(ModelView):
page_size = 15
def on_model_change(self, form, User, is_created=False):
# 调用用户模型中定义的set方法
User.set_password(form.password.data)
再添加一个用户信息
发现用户密码已经被加密了!