不需要时初始化的WTFforms字段值

时间:2019-05-02 09:44:25

标签: flask flask-wtforms wtforms

我有一个WTFforms“用户添加”表单,该表单接受用户的常用属性并将其提交到数据库。在不需要页面加载时,会填充这些html表单字段的值。

我没有设置任何Jinja代码来设置字段,并且在此页面的路由中,我没有将用户传递给render_template调用。

用户表单和用户类别的字段与您期望的非常相似

用户对象

class User(UserMixin, db.Model):

id = db.Column(db.Integer, primary_key=True)
firstname = db.Column(db.String(64), index=True, unique=False)
surname = db.Column(db.String(64), index=True, unique=False)
email = db.Column(db.String(120), index=True, unique=True)
password_hash = db.Column(db.String(128))
num_records_added = db.Column(db.Integer, unique=False, default=0)
num_records_edited = db.Column(db.Integer, unique=False, default=0)
role = db.Column(db.String(20), index=False, unique=False, default='Editor')

用户表单

class AddUserForm(FlaskForm):

firstname = StringField('First name', validators=[DataRequired()])
surname = StringField('Surname', validators=[DataRequired()])
email = StringField('Email address', validators=[DataRequired(), Email()])
role = SelectField('Role', choices=[], validators=[DataRequired()])
password = PasswordField('password', validators=[DataRequired()])
num_records_added = IntegerField('Number of Records Added')
submit = SubmitField('Submit')

我的假设是通过flask_login登录的用户与表单之间存在交互,因为他们共享相似的属性/字段。

为了证明这一点,我修改了表单,以便每个字段的名称末尾都带有一个“ _”,并更新了路由/模板以使用这种新的命名方式,问题就消失了。

有人可以解释这里发生了什么,避免这种问题的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我发现了问题,原来是导致问题的lastpass的自动填充行为。

它在字段中填写的信息与表单字段的ID /标签与其网站条目相匹配。

我认为浏览器的其他自动填充行为可能会发生这种情况。

在这种情况下,我必须接受我需要为与这些自动填充字段不匹配的表单字段使用id,否则将填充它们。

相关问题