Bro*_*sef 6 python json flask wtforms flask-wtforms
我正在使用wtforms我的帖子请求处理数据.一个特定的发布请求发送包括布尔值的各种数据.
我的表单看起来像这样:
class EditFileForm(Form):
title = StringField('title')
shared = BooleanField('shared')
fileID = IntegerField('fileID')
userID = IntegerField('userID')
Run Code Online (Sandbox Code Playgroud)
我可以看到,当我收到请求时,数据如下所示:
data = MultiDict(mapping=request.json)
print(data)
>>MultiDict([(u'shared', False), (u'title', u'File5'), (u'userID', 1), (u'fileID', 16)])
Run Code Online (Sandbox Code Playgroud)
您可以看到布尔字段为"false",并且打印原始数据也显示出来但是,当我打印实际的表单字段时,我得到了真实.
print(form.shared.raw_data)
[False]
print(form.shared.data)
True
Run Code Online (Sandbox Code Playgroud)
我读到WTForms可能不知道如何处理错误的布尔值.这样做的正确方法是什么?用一个IntegerField代替?
我有另一个表单,其中booleanfield正在处理来自postgres数据库的错误布尔值.
dav*_*ism 11
WTForms并不真正意味着使用JSON数据.在这种情况下,BooleanField检查它收到的值是否为field.false_values默认值('false', '').该False物体是不是在那里,所以它被认为是真实的.
您可以将另一组传递false_values给该字段.
BooleanField(false_values={False, 'false', ''})
Run Code Online (Sandbox Code Playgroud)
或者在第一次使用该字段之前将其放置在某处,为所有实例修补它.
BooleanField.false_values = {False, 'false', ''}
Run Code Online (Sandbox Code Playgroud)
最好使用Marshmallow等序列化库来处理JSON数据.