Значения полей WTFforms инициализируются, когда не требуется - PullRequest
0 голосов
/ 02 мая 2019

У меня есть форма WTFforms "user add", которая принимает общие атрибуты для пользователя и фиксирует их в базе данных. Значения этих полей формы 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 голосов
/ 02 мая 2019

Я обнаружил проблему, и выяснилось, что причиной последнего является поведение автозаполнения lastpass.

Он заполнял поля информацией, которую он имел, поскольку id / метки поля формы совпадали с его записью для веб-сайта.

Я полагаю, что это может произойти для других типов автозаполнения браузеров.

В этом случае я должен принять, что мне нужно использовать идентификаторы для полей формы, которые не соответствуют этим полям автоматического заполнения, в противном случае они будут заполнены.

...