You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 21:06:00