flask -wtf HiddenField не восстанавливает данные заново - PullRequest
0 голосов
/ 09 мая 2020

У меня проблема при использовании HiddenField , я не могу получить данные из него, форма отображается правильно

 {{form.user_id(value=user.id)}} 
class EditUserForm(FlaskForm):

   username = StringField("Username", validators=[
                    DataRequired(), Length(min=5, max=20)])
   email = StringField("Email", validators=[Email()])
   password = PasswordField("Password", validators=[DataRequired()])
   password_confirmation = PasswordField("Confirm Password", validators= 
                                           [EqualTo('password')])
   role = SelectField('Role',
                            choices=[(Role.name, Role.value)
                                    for Role in Roles],
                            default=Roles.admin.value)

   user_id = HiddenField("user.id")

   submit = SubmitField("Save")

   def validate_username(self, username):

        #run validation only if the username has changed

        user = User.query.get(self.user_id.data)
        if username.data != user.username:
            user = User.query.filter_by(username=username.data).first()
            if user:
                raise ValidationError(f"{self.username.data} is already taken")

   def validate_email(self, email):

        #run validation only if the email has changed

        user = User.query.get(self.user_id.data)
        if email.data != user.email:
            email = User.query.filter_by(email=email.data).first()
            if email:
                raise ValidationError(f"{self.email.data} is already taken")

, когда я пытался использовать StringField и установите type = "hidden"

{{form.user_id(type="hidden, value=user.id)}} 

он работает

1 Ответ

0 голосов
/ 10 мая 2020

Попробуйте использовать в html -шаблон:

{{ form.user_id() }}

Создать скрытое поле формы:

   user_id = HiddenField('user_id', default=user.id)
...