簡體   English   中英

WTForms BooleanField將JSON false值視為true

[英]WTForms BooleanField treats JSON false value as true

我正在使用wtforms處理來自我的帖子請求的數據。 一個特定的發布請求發送包括布爾值的各種數據。

我的表單看起來像這樣:

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)])

您可以看到布爾字段為“false”,並且打印原始數據也顯示出來但是,當我打印實際的表單字段時,我得到了真實。

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

我讀到WTForms可能不知道如何處理錯誤的布爾值。 這樣做的正確方法是什么? 使用IntegerField代替?

我有另一個表單,其中booleanfield正在處理來自postgres數據庫的錯誤布爾值。

WTForms並不真正意味着使用JSON數據。 在這種情況下, BooleanField檢查它收到的值是否為field.false_values ,默認為('false', '') False對象不在那里,所以它被認為是真的。

您可以將一組不同的false_values給該字段。

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

或者在第一次使用該字段之前將其放置在某處,為所有實例修補它。

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

最好使用Marshmallow等序列化庫來處理JSON數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM