我想获取用户输入日期的数据,如果没有输入任何内容,则为当前日期。我使用WTForms创建一个带有日期输入的表单,如果日期字段有数据,则重写validate
返回{
class ChooseDate(Form):
date = DateField(format='%m-%d-%Y')
def validate(self):
if self.date.data is None:
return False
else:
return True
@app.route('/index', methods=['GET', 'POST'])
def index():
date_option = ChooseDate()
print(date_option.date.data) # always None
if date_option.validate():
request_date = date_option.date.data
else:
request_date = datetime.today().date()
return render_template_string(template_string, form=date_option, date=request_date)
您没有正确重写
validate
。validate
触发表单读取数据并填充字段的data
属性。您没有调用super
,所以这种情况永远不会发生。在在本例中,没有理由重写
^{pr2}$validate
,您只是试图确保为该字段输入了数据,所以使用内置的InputRequired
验证器。使用字段验证器也会将错误消息添加到表单中。在有关validation的更多信息,请参阅文档。在
最后,需要将表单数据传递给表单。如果您使用的是Flask-WTF扩展名的
FlaskForm
,则会自动传递该扩展名。在相关问题 更多 >
编程相关推荐