繁体   English   中英

WTForms SelectField没有正确地强制执行布尔值

[英]WTForms SelectField not properly coercing for booleans

这是我的代码:

class ChangeOfficialForm(Form):
    is_official = SelectField(
        'Officially Approved',
        choices=[(True, 'Yes'), (False, 'No')],
        validators=[DataRequired()],
        coerce=bool
    )
    submit = SubmitField('Update status')

出于某种原因, is_official.data始终为True 我怀疑我误解了胁迫是如何起作用的。

虽然您已将bool传递给选项,但HTML值中仅使用字符串。 所以你会有选择值'True''False' 这两个都是非空字符串,因此当使用bool强制bool ,它们都会计算为True 你需要使用一个不同的callable来为'False'字符串做正确的事情。

您还需要使用InputRequired验证器而不是DataRequired 如果数据类似于False,则检查数据会失败,而只要输入不为空,检查输入就会生效。

SelectField(
    choices=[(True, 'Yes'), (False, 'No')],
    validators=[InputRequired()],
    coerce=lambda x: x == 'True'
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM