Валидаторы WTForms Flask (wtf_flask), как включить атрибут «required» для RadioField - PullRequest
2 голосов
/ 23 марта 2019

То, что я в основном ищу, это эквивалентный валидатор RadioField для InputRequired() для WTForms. Я имею в виду, когда вы пытаетесь отправить форму, не вводя текст в поле StringField, имеющее валидатор InputRequired(). Пользователь получает подсказку над текстовым полем с надписью "Please fill out this field". Я хочу, чтобы пользователь выбрал либо male, либо female.

Это легко сделать в HTML-формах, просто включив атрибут required в свою HTML-форму. Но я не могу понять, что такое эквивалент в WTForms для RadioField. InputRequired() и DataRequired() предназначены только для текстовых полей ввода и, похоже, не работают с полями любого другого типа.

Если у меня есть приведенный ниже очень простой класс WTForms для формы регистрации, InputRequired() прекрасно работает в этом случае, так как дает пользователю подсказку "Please fill out this field" Если они забывают ввести свои name или surname. Форма не будет отправлена, если они не введут данные в эти поля.

class Signup(FlaskForm):
name = StringField('First Name', validators=[InputRequired()])
surname = StringField('Last Name', validators=[InputRequired()])
submit = SubmitField('Signup')

Но если у меня есть приведенная ниже форма с RadioField, какой эквивалентный валидатор заставит пользователя выбрать Male или Female, а если он не выберет один, я хочу дать приглашение "please fill out this field"? (Я использую BootStrap) Я не могу найти информацию об этом. Это существует? Этот вопрос во втором ответе в основном содержал то, что я искал Required="Required", но с тех пор он устарел с июня 2018 года. Я пробовал почти все подходы, пытаясь использовать InputRequired() или DataRequired() с RadioField, но безуспешно.

class StudentPersonalQs(FlaskForm):
gender = RadioField('Gender', choices = [('Male','Male'),('Female','Female')])
age = SelectField('Age', choices = [('12', '12'), ('13', '14'),('15', '15'), ('16', '16'),('17', '17'), ('18+', '18+')])
submit = SubmitField('Signup')

1 Ответ

0 голосов
/ 25 марта 2019

ИМО, вы можете использовать только этот способ для достижения этого в настоящее время:

{% for subfield in form.age %}
    <tr>
        <td>{{ subfield(required="required") }}</td>
        <td>{{ subfield.label }}</td>
    </tr>
{% endfor %}
...