小编Pal*_*aty的帖子

wtforms.BooleanField 的 DataRequired 验证器已损坏

我使用 WTForms(与 Flask、flask-wtf、sqlalchemy 一起)来验证 REST API 传入的 JSON。我意识到 WTForms 的目标更多是 HTML 表单渲染和验证,但我选择它是因为它可以从我的 sqlalchemy 模型中自动生成表单(感谢 wtforms.ext.sqlalchemy)。

无论如何,问题就在这里。我的模型之一包括布尔字段,它使用 DataRequired 验证器转换为 wtforms.BooleanField。问题是,即使我传递了正确的数据,验证也会失败,并显示“此字段为必填项”错误消息。我的表格:

class MyForm(Form):
    name = TextField('name', validators=[DataRequired()])
    disabled = BooleanField('disabled', validators=[DataRequired()])
Run Code Online (Sandbox Code Playgroud)

JSON数据是这样的:

'{"name": "John", "disabled": "false"}'
Run Code Online (Sandbox Code Playgroud)

我期待什么:

  1. {"disabled": "false"}-> 验证成功的强制 Python 数据:{'disabled': False}
  2. {"disabled": "true"}-> 验证成功的强制 Python 数据:{'disabled': True}
  3. {"disabled": ""}'{"disabled": "foo"}'-> 验证失败

目前在第一种情况下验证失败{'disabled': [u'This field is required.']}

我知道文档中有一条注释说DataRequired验证器“需要强制数据,而不是输入数据”,但是 1)表单是自动生成的wtforms.ext.sqlalchemy,2)如果我使用验证器,它应该如何表现InputRequired?检查(通过form.validate()某些数据是否存在,然后检查该数据是“真”还是“假”?

总而言之,我的问题是:

  1. 正确的验证方法是什么wtforms.BooleanField …

python validation json wtforms

5
推荐指数
1
解决办法
2823
查看次数

标签 统计

json ×1

python ×1

validation ×1

wtforms ×1