[英]How to interact with individual form fields in Flask-Admin?
如何遍历Flask-Admin中可用的某些表单字段?
通常,当用户提交我为网站创建的自定义表单之一时,我会使用flask_bcrypt
哈希密码。 但是,如果我使用flask-admin
更改了特定用户的密码,那将是行不通的,因为它不会将新密码保存为哈希。
我想先哈希新密码,然后再将其存储在数据库中。
我怎样才能实现这个目标? 我在网上看过但什么也没找到。 那根本不可能吗? 我曾尝试查看文档,但实际上找不到任何有用的文档。
假设这是我的数据模型:
class User(db.Model , UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
password = db.Column(db.String(60), nullable=False)
这是我不使用flask-admin
通常使用的注册途径:
@app.route("/register", methods=['GET', 'POST'])
def register():
form = RegistrationForm()
if form.validate_on_submit():
hashed_pass=bcrypt.generate_password_hash(form.password.data).decode('utf-8')
user = User(username=form.username.data,email=form.email.data, password=hashed_pass)
db.session.add(user)
db.session.commit()
我想从管理员模型视图获取密码字段,并与上述代码相同。
在查看SQLAlchemy文档时,我找到了一种解决此问题的方法,只需设置一个事件侦听器,该事件侦听器会在编辑或更改密码值时启动。
@event.listens_for(User.password, 'set')
def hashPass(target, value, oldvalue, initiator):
if value != oldvalue:
return bcrypt.generate_password_hash(value).decode('utf-8')
else:
return oldvalue
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.