1
사용자가 라디오 선택을 선택하지 않고 제출하고 작동하지 않을 때 오류가 발생하려고합니다. 나는이 같은 필드를 렌더링 할 때 : {{ render_field(form.example) }}
그것은 (self.gettext('PICK SOMETHING')
를 인쇄,하지만 난 아무것도 아래의 형식을 사용할 때 발생합니다Flask-WTForms 라디오 필드에서 사전 유효성 검사를 재정의하는 방법
{% for subfield in form.religion %}
{{ render_field(subfield, class_="foo") }}
{{ render_field(subfield.label) }}
{% endfor %}
radio.py
class ReligionField(SelectField):
widget = ListWidget(prefix_label=False)
option_widget = RadioInput()
def pre_validate(self, form):
for v, _ in self.choices:
if self.data == v:
break
else:
raise ValueError(self.gettext('PICK SOMETHING'))
class ReligionForm(FlaskForm):
religions = ['Christian', 'Muslim', 'Hindu', 'Buddhist']
choices = [(x.lower(), x.title()) for x in sorted(religions)]
religion = ReligionField('Religion', validators=[DataRequired()], choices=choices, render_kw={"class":"post", "type":"radio"})
@app.route('/',methods=['post','get'])
def hello_world():
form = ReligionForm()
if form.validate_on_submit():
print form.religion.data
else:
print form.errors
return render_template('radio.html', form=form)
을 어떻게 오류를 높이기 위해 pre_validate
을 대체 할 수 있습니다 선택하지 않고 제출하면 어떻게됩니까? 그것은 작동하지 않습니다
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul class=flashes>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<form method="post">
{% for subfield in form.religion %}
<li>{{subfield.label}} {{subfield}} </li>
{% endfor %}
<button>Submit</button>
</form>
radio.html : – roy
어떤 오류가 발생했는지 보여줄 수 있습니까? 그리고 원하는 출력은 무엇입니까? –
아무 것도 제출하지 않으면 'PICK SOMETHING'을 인쇄하고 싶습니다. – roy