Я использую wtforms для создания формы регистрации и входа, но по какой-то причине, хотя я считаю, что валидаторы работают, сообщения об ошибках появляются только под текстовыми полями для DataRequired (), а не для Length или EqualTo иЯ не могу понять, почему.
Я попытался полностью перейти на импорт валидаторов.Я также попытался заполнить параметры сообщения в функциях валидатора, но проблема остается.Я следовал этому уроку https://www.youtube.com/watch?v=UIJKdCIEXUQ&list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH&index=3
Сама форма
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, BooleanField
from wtforms.validators import DataRequired, Length, EqualTo, ValidationError
from tweetplane.models.user import User
class SignUpForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(), Length(min=4, max=32)])
password = PasswordField('Password', validators=[DataRequired(), Length(min=6)])
confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')])
submit = SubmitField('Sign Up')
def validate_username(self, username):
user = User.query.filter_by(username=username.data).first()
if user:
raise ValidationError('Username taken, please try another.')
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(), Length(min=4, max=32)])
password = PasswordField('Password', validators=[DataRequired()])
remember = BooleanField('Remember Me')
submit = SubmitField('Login')
Шаблон
<div class="form-group">
{{ form.password.label(class="form-control-label") }}
{% if form.password.errors %}
{{ form.password(class="form-control form-control-lg is invalid") }}
<div class="invalid-feedback">
{% for error in form.password.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.password(class="form-control form-control-lg") }}
{% endif %}
</div>