我正在使用WTForms(與Flask,flask-wtf,sqlalchemy一起)驗證傳入的JSON for REST API。我意識到WTForms更多地針對HTML表單呈現和驗證,但是我選擇它是因爲它可以自動生成我的sqlalchemy模型(感謝wtforms.ext.sqlalchemy)。DataRequired驗證器被破壞wtforms.BooleanField
無論如何,這是問題所在。我的一個模型包括boolean字段,它轉換爲帶有DataRequired驗證器的wtforms.BooleanField。問題是,即使我傳遞了正確的數據,驗證也會失敗,'此字段是必需的'錯誤消息。我的表:
class MyForm(Form):
name = TextField('name', validators=[DataRequired()])
disabled = BooleanField('disabled', validators=[DataRequired()])
JSON數據是這樣的:
'{"name": "John", "disabled": "false"}'
我很期待:
{"disabled": "false"}
- >驗證帶成功,脅迫Python數據:{'disabled': False}
{"disabled": "true"}
- >驗證成功,強制的Python數據:{'disabled': True}
{"disabled": ""}
或'{"disabled": "foo"}'
- >驗證失敗
目前在第一種情況下驗證失敗,{'disabled': [u'This field is required.']}
我知道有一個音符docs,說DataRequired
驗證「要求強制數據,而不是輸入數據」,但1)該表格是由wtforms.ext.sqlalchemy
自動生成的; 2)如果我使用InputRequired
驗證程序,它應該如何表現?檢查(通過form.validate()
)一些數據存在,然後檢查這個數據是「真」還是「假」?
總之,我的問題是:
- 什麼是驗證
wtforms.BooleanField
的正確方法是什麼? - 也許有一些其他的框架可以驗證傳入的JSON對給定的sqlalchemy模型?
感謝。
你試過'默認=( '禁用',FALSE)'?因爲'disabled'字段的默認值應該是'False'。 – Mortezaipo
我應該在哪裏傳遞這個元組? – Palasaty
對不起,這個元組是'select'標籤。試試看:'disabled = BooleanField('disabled',validators = [DataRequired()],defaults = False)' – Mortezaipo