RadioField 永远不会正确验证
RadioField never validates correctly
我是 Flask 的新手,正在尝试构建一个简单的人口统计调查。虽然验证 StringField
(例如国籍)工作正常,但我在 RadioField
方面遇到了麻烦。如果我不为 RadioField
提供任何输入,则不会出现错误消息。我认为问题出在我的 jinja2 模板上,但我找不到我做错了什么。
有什么建议吗?
摘自main.py:
class DemographicsForm(FlaskForm):
Gender = RadioField(
'Gender',
choices=[('M', 'Male'), ('F', 'Female'), ('O', 'Other')],
validators=[InputRequired()]
)
@app.route("/demographics", methods=['GET', 'POST'])
def demographics():
form = DemographicsForm()
return render_template('demographics.html', title='Demographic Information', form=form)
摘自demographics.html:
<div class="form-group">
{{ form.Gender.label(class='radio') }}
{% if form.Gender.errors %}
{{ form.Gender(class='radio is-invalid') }}
<div class="invalid-feedback">
{% for error in form.Gender.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.Gender(class='radio') }}
{% endif %}
</div>
实际上问题出在您的 Jinja 代码上。您实现错误处理的方式非常混乱。它应该像这个一样简单:
<div class="form-group">
{{ form.Gender.label(class='radio') }}
{{ form.Gender(class='radio') }}
{% for error in form.Gender.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</div>
因此,当您在未选择单选按钮的情况下发送表单时,您的页面(在上面的代码中将以红色显示)和您的控制台中将出现一条错误消息。
我是 Flask 的新手,正在尝试构建一个简单的人口统计调查。虽然验证 StringField
(例如国籍)工作正常,但我在 RadioField
方面遇到了麻烦。如果我不为 RadioField
提供任何输入,则不会出现错误消息。我认为问题出在我的 jinja2 模板上,但我找不到我做错了什么。
有什么建议吗?
摘自main.py:
class DemographicsForm(FlaskForm):
Gender = RadioField(
'Gender',
choices=[('M', 'Male'), ('F', 'Female'), ('O', 'Other')],
validators=[InputRequired()]
)
@app.route("/demographics", methods=['GET', 'POST'])
def demographics():
form = DemographicsForm()
return render_template('demographics.html', title='Demographic Information', form=form)
摘自demographics.html:
<div class="form-group">
{{ form.Gender.label(class='radio') }}
{% if form.Gender.errors %}
{{ form.Gender(class='radio is-invalid') }}
<div class="invalid-feedback">
{% for error in form.Gender.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.Gender(class='radio') }}
{% endif %}
</div>
实际上问题出在您的 Jinja 代码上。您实现错误处理的方式非常混乱。它应该像这个一样简单:
<div class="form-group">
{{ form.Gender.label(class='radio') }}
{{ form.Gender(class='radio') }}
{% for error in form.Gender.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</div>
因此,当您在未选择单选按钮的情况下发送表单时,您的页面(在上面的代码中将以红色显示)和您的控制台中将出现一条错误消息。