gpt4 book ai didi

python - WTForms BooleanField 将 JSON false 值视为 true

转载 作者:太空狗 更新时间:2023-10-29 22:15:16 26 4
gpt4 key购买 nike

我正在使用 wtforms 来处理来 self 的发布请求的数据。某个 post 请求发送各种数据,包括 bool 值。

我的表单如下所示:

class EditFileForm(Form):
title = StringField('title')
shared = BooleanField('shared')
fileID = IntegerField('fileID')
userID = IntegerField('userID')

我可以看到,当我收到请求时,数据如下所示:

data = MultiDict(mapping=request.json)
print(data)
>>MultiDict([(u'shared', False), (u'title', u'File5'), (u'userID', 1), (u'fileID', 16)])

您可以看到 bool 字段为“false”,打印原始数据也显示了这一点。但是,当我打印实际的表单字段时,我得到了 true。

print(form.shared.raw_data)
[False]
print(form.shared.data)
True

我读到 WTForms 可能不知道如何处理错误的 bool 值。这样做的正确方法是什么?使用 IntegerField 代替?

我有另一个带有 bool 字段的表单,它可以很好地处理来 self 的 postgres 数据库的错误 bool 值。

最佳答案

WTForms 并不是真的要处理 JSON 数据。在这种情况下,BooleanField 检查它收到的值是否在 field.false_values 中,默认为 ('false', '')False 对象不在其中,因此它被认为是 true。

您可以将一组不同的 false_values 传递给该字段。

BooleanField(false_values={False, 'false', ''})

或者通过在第一次使用该字段之前将其放置在某处来为所有实例修补它。

BooleanField.false_values = {False, 'false', ''}

您最好使用序列化库,例如 Marshmallow处理 JSON 数据。

关于python - WTForms BooleanField 将 JSON false 值视为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38088806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com