2014-08-04 1 views
0

У меня есть приложение, использующее 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')) 
+0

Что ваша модель выглядит? –

+0

Я обновил свой пост с помощью моей модели :) –

ответ

2

Fixed. Я забыл, что мне не нужно было включать поля уже там.

Fix:

class ExtendedRegisterForm(RegisterForm): 
    name = TextField('Team Name', [DataRequired()]) 
    players = TextField('Players', [DataRequired()])