Ben*_*ler 5 python flask wtforms flask-wtforms
这是我的代码:
class ChangeOfficialForm(Form):
is_official = SelectField(
'Officially Approved',
choices=[(True, 'Yes'), (False, 'No')],
validators=[DataRequired()],
coerce=bool
)
submit = SubmitField('Update status')
Run Code Online (Sandbox Code Playgroud)
出于某种原因,is_official.data总是如此True.我怀疑我误解了胁迫是如何起作用的.
虽然您已将 bool 传递给选项,但在 HTML 值中仅使用字符串。因此,您将拥有选择值'True'和'False'。这两个都是非空字符串,因此当该值被 强制时bool,它们的计算结果都为True。您需要使用不同的可调用对象来为'False'字符串做正确的事情。
您还需要使用InputRequired验证器而不是DataRequired. 如果数据是 False-like,则检查数据失败,而只要输入不为空,检查输入就会验证。
SelectField(
choices=[(True, 'Yes'), (False, 'No')],
validators=[InputRequired()],
coerce=lambda x: x == 'True'
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1521 次 |
| 最近记录: |