У меня есть форма WTForms, содержащая несколько различных типов полей, все из которых работают, кроме RadioField
.
Python:
из flask_wtf импортировать FlaskForm
из валидаторов импорта wtforms, RadioField, DecimalField
class MyForm(FlaskForm):
field_one = DecimalField('Field 1', validators=[Optional()]
field_two = RadioField('Radio', choices=[(True, 'True'), (False, 'False')])
submit = SubmitField('Submit')
@app.route('/page', methods=['GET', 'POST'])
def page():
form = MyForm()
print('Page requested')
if form.validate_on_submit():
print('form validated')
return render_template('/page.html', form=form)
HTML:
<form method="POST">
<div class="row">
{{ form.hidden_tag() }}
{{ form.field_one.label }}
<div>
{{ form.field_one }}
</div>
</div>
<div class="row">
{{ form.hidden_tag() }}
{{ form.field_two.label }}
<div>
{% for subfield in form.field_two %}
<p>{{ subfield }} - {{ subfield.label }}
{% endfor %}
</div>
</div>
</form>
Когда я вынимаю что-либо, связанное с field_two
(RadioField), print('form validated')
будет выполняться каждый раз, когда я нажимаю на кнопку submit.
Но как только RadioField включен, форма никогда не проверяется. Я подумал, что это может быть из-за того, что у поля нет связанного валидатора, но оно все равно не работает, когда я добавляю validators=[Optional()]
к определению field_two
.
Кто-нибудь знает, почему форма не проверена с помощью RadioField?
(Я попробовал четыре варианта, о которых могу подумать. Нажав кнопку отправки с и без выбора опции радио, добавив и удалив необязательный валидатор к определению формы.)