У меня есть форма 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 и формой, поскольку они имеют общие атрибуты / поля.
Чтобы доказать это, я изменил форму так, чтобы каждое поле имело конечную "_" как часть его имени, и обновил маршрут / шаблон для работы с этим новым стилем именования, и проблема исчезла.
Может кто-нибудь объяснить, что здесь происходит и как правильно избежать этой проблемы?