wtforms-json:我怎么能不允许None /空字符串值?

时间:2017-10-20 20:38:58

标签: flask wtforms flask-wtforms wtforms-json

我正在使用Flask和wtforms-json构建一个简单的JSON API。我有一个问题,即允许字段为None,即使它们确实不应该是,例如:

wtforms.BooleanField('state', validators=[validators.Optional(), validators.AnyOf([True, False])])

仍然以某种方式通过显式的None(或null)值而不是验证失败或从表单的patch_data()中删除字段(尽管None有时应该是有效的)。与字符串字段相同,设置默认值也没有帮助。

我写了small test script来说明问题。将名称设置为''导致它在补丁数据中为None,而不是像第二个接受的变量那样丢失。

json {}
errors {}
form.data {'name': None, 'potato': None}
form.patch_data {}

json {'name': ''}
errors {}
form.data {'name': None, 'potato': None}
form.patch_data {'name': None}

json {'name': 'a'}
errors {'name': ['Field must be between 2 and 128 characters long.']}
form.data {'name': 'a', 'potato': None}
form.patch_data {'name': 'a'}

json {'name': 'ab'}
errors {}
form.data {'name': 'ab', 'potato': None}
form.patch_data {'name': 'ab'}

json {'potato': None}
errors {}
form.data {'name': None, 'potato': None}
form.patch_data {'potato': None}

json {'potato': ''}
errors {}
form.data {'name': None, 'potato': None}
form.patch_data {'potato': None}

json {'potato': 'minimum'}
errors {'potato': ['Invalid value, must be one of: maximum.']}
form.data {'name': None, 'potato': 'minimum'}
form.patch_data {'potato': 'minimum'}

json {'potato': 'maximum'}
errors {}
form.data {'name': None, 'potato': 'maximum'}
form.patch_data {'potato': 'maximum'}

0 个答案:

没有答案