Валидатор NumberRange не работает для отрицательных чисел

#validation #flask #wtforms

#проверка #колба #wtforms

Вопрос:

Я создал класс на python с именем EntryForm и хочу проверить входные данные, чтобы чей-то доход был числом больше 0, и я использую Flask-wtf / wtforms для проверки. Когда я использую приведенный ниже код, InputRequired() работает как ожидалось, но NumberRange — нет. Отрицательные числа или не числовые входные данные не приводят к ошибке.

 class EntryForm(FlaskForm):
    income = IntegerField('Income', validators=[InputRequired(), NumberRange(min=0, message='Must enter a number greater than 0')])
  

Здесь вызывается класс

 form = EntryForm()
    if form.is_submitted():
        data = request.form
        user_income = int(data.get('income'))


This is the html portion
<form action="/" method="POST">
                <p>
                    {{form.hidden_tag() }}
                    {{form.income.label}}
                    {{form.income(size=20)}}
                    {% for error in form.income.errors %}
                        {{error}}
                    {% endfor %}
  

Ответ №1:

Вы должны вызвать validate_on_submit , а затем is_submitted

 form = EntryForm()
if form.validate_on_submit():
    data = request.form
    user_income = int(data.get('income'))
    ...
    return 
return render('your_template_name.html', form=form)