如何为Flask WTForm的DateField字段设置今日为默认日期
解决方法
方案1:表单类定义时设置默认值
首先导入日期对象:
from datetime import date
直接在DateField的参数中加default属性,传入不带括号的date.today即可:
class WelcomeForm(FlaskForm): startdate = DateField( 'Start Date', format='%Y-%m-%d', validators=(validators.DataRequired(),), default=date.today ) enddate = DateField( 'End Date', format='%Y-%m-%d', validators=(validators.DataRequired(),), default=date.today ) submit = SubmitField('Submit')
注意不要给
date.today加括号:如果加了括号,日期会在应用启动时就固定计算一次,后续不会随系统日期更新;传不带括号的可调用对象,WTForm每次渲染表单都会自动调用获取最新的当日日期。
方案2:视图函数中动态赋值
如果有特殊业务逻辑需要在渲染表单时动态调整默认值,也可以在视图函数里手动给字段赋值:
from datetime import date from flask import request, render_template @app.route('/your-route', methods=['GET', 'POST']) def your_view(): form = WelcomeForm() # 仅在GET请求(首次加载表单)时赋值 if request.method == 'GET': form.startdate.data = date.today() form.enddate.data = date.today() if form.validate_on_submit(): # 正常处理表单提交逻辑 pass return render_template('your_page.html', form=form)
内容的提问来源于stack exchange,提问作者Shravya Mutyapu
相关产品推荐
相关产品推荐

