У меня есть приложение, использующее Flask-Security, где пользователям необходимо ввести дополнительную информацию о регистрации.Flask-Security: Пользовательская форма регистрации не проверяется правильно
на основе the Flask-Security documentation я создал ExtendedRegisterForm:
class ExtendedRegisterForm(RegisterForm):
email = TextField('Email Address', [DataRequired()])
password = PasswordField('Password', [DataRequired()])
retype_password = PasswordField('Retype Password', [DataRequired()])
name = TextField('Team Name', [DataRequired()])
players = TextField('Players', [DataRequired()])
и добавили его инициализации безопасности:
security = Security(app, user_datastore, register_form=forms.ExtendedRegisterForm)
Я также обновил свой шаблон, чтобы включить дополнительные поля:
{{ register_user_form.hidden_tag() }}
{{ render_field_with_errors(register_user_form.email, class_="form-control") }}
{{ render_field_with_errors(register_user_form.password, class_="form-control") }}
{% if register_user_form.password_confirm %}
{{ render_field_with_errors(register_user_form.password_confirm, class_="form-control") }}
{% endif %}
{{ render_field_with_errors(register_user_form.name, class_="form-control") }}
{{ render_field_with_errors(register_user_form.players, class_="form-control") }}
{{ render_field(register_user_form.submit, class_="btn btn-default") }}
У меня проблема, когда пользователь все их данные и клики отправляются, страница обновляется, и пароли исчезают, но ошибки проверки не присутствуют. В моем журнале флэков я вижу, что он правильно сделал запрос POST, но кажется, что Flask-Security не получает его правильно.
Если я удалю подтверждение DataRequired() в форме, тогда Flask-Security принимает запрос POST, но больше не проверяет, существует ли учетная запись с этим письмом до добавления нового в базу данных.
Кто-нибудь испытал этот вопрос раньше или у вас есть какие-либо предложения по решению этой проблемы?
Cheers, Джон
EDIT: Вот моя модель:
class Team(db.Model):
id = db.Column(db.Integer, primary_key = True)
email = db.Column(db.String(120), unique = True)
password = db.Column(db.String(255))
active = db.Column(db.Boolean())
name = db.Column(db.String(64), index = True, unique = True)
players = db.Column(db.String(255))
last_password_time = db.Column(db.DateTime)
events = db.relationship('Event', secondary=events,
backref=db.backref('teams', lazy='dynamic'))
roles = db.relationship('Role', secondary=roles_users,
backref=db.backref('teams', lazy='dynamic'))
Что ваша модель выглядит? –
Я обновил свой пост с помощью моей модели :) –