flask使用wtforms验证表单时,没有设置参数choices出现TypeError: Choices cannot be None
时间: 2024-11-25 17:20:47 浏览: 15
在Python的Flask中使用WTForms表单框架的基础教程
当在使用Flask-WTF库(包括wtforms)创建表单并设置`Field`的`choices`属性时,如果忘记提供选项或者错误地设置为`None`,就会引发`TypeError: 'NoneType' object is not iterable`的错误[^1]^2]。这是因为`choices`期望的是一个可迭代的对象,如列表或元组,其中包含可选的值对。
要解决这个问题,你需要确保你在定义字段时为`choices`提供了一个有效的选项列表。例如,如果你有一个多选框,你可以这样做:
```python
from wtforms import SelectField, Form
from wtforms.validators import DataRequired
class MyForm(Form):
my_choice_field = SelectField('Select an option:', choices=[('option1', 'Option 1'), ('option2', 'Option 2')], validators=[DataRequired()])
```
在这个例子中,`my_choice_field`将有预设的选项供用户选择,并且`DataRequired`验证器会确保这个字段在提交时不是`None`。
阅读全文