Задать вопрос
@toobinks

Flask. Как через форму редактировать профиль?

Не могу понять как реализовать стадию валидации для редактирования профиля. Как реализовать форму редактирования профиля без JS? Если пользователь меняет, например, почтовый адрес, то в валидацию приходят все поля, в том числе и те, которые не менялись. Для всех данных проходит валидация на уникальность и естественно не меняющиеся данные уже есть у пользователя.
Или я неправильно делаю, что не разделяю админку и функцию пользователя менять свои данные?

class User(UserMixin, SurrogatePK, Model):
    """A user of the app."""

    __tablename__ = 'users'
    username = Column(db.String(80), unique=True, nullable=False)
    email = Column(db.String(80), unique=True, nullable=False)
    password = Column(db.Binary(128), nullable=True)

class UserEditForm(Form):
    """Register form."""

    username = StringField('Username',
                           validators=[Optional(), Length(min=3, max=25)])
    email = StringField('Email',
                        validators=[Email(), Length(min=6, max=40)])
    password = PasswordField('Password',
                             validators=[Optional(), Length(min=6, max=40)])

    def __init__(self, *args, **kwargs):
        """Create instance."""
        super(UserEditForm, self).__init__(*args, **kwargs)
        self.user = None

    def validate(self):
        """Validate the form."""
        initial_validation = super(RegisterForm, self).validate()
        if not initial_validation:
            return False
        user = User.query.filter_by(username=self.username.data).first()
        if user:
            self.username.errors.append('Username already registered')
            return False
        user = User.query.filter_by(email=self.email.data).first()
        if user:
            self.email.errors.append('Email already registered')
            return False
        return True
  • Вопрос задан
  • 212 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Академия Eduson
    Python-разработчик
    9 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы