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

Flask WTForms DateTimeLocalField无法传递数据问题求助

解决Flask WTForms中DateTimeLocalField无法返回数据的问题

问题原因

HTML的datetime-local输入控件提交的格式是YYYY-MM-DDTHH:MM,而WTForms的DateTimeLocalField默认未指定匹配的格式规则,导致无法正确解析提交的字符串,最终返回None。另外,视图中未触发表单验证流程,也会影响数据的正常解析。

解决方案

1. 为DateTimeLocalField指定匹配格式

修改表单定义,添加format参数,匹配前端控件提交的时间格式:

from flask_wtf import FlaskForm
from wtforms.fields import DateTimeLocalField

class AddLegForm(FlaskForm):
    # 指定与datetime-local控件匹配的格式
    origin_datetime = DateTimeLocalField('Origin Time', format='%Y-%m-%dT%H:%M')

2. 在视图中执行表单验证

只有调用form.validate_on_submit(),WTForms才会触发数据解析和验证逻辑,确保字段数据被正确读取:

@loads_blueprint.route('/add_leg/<load_id>', methods=['GET', 'POST'])
@login_required
def add_leg(load_id):    
    form = AddLegForm()   
    if form.validate_on_submit():
        # 此时origin_datetime.data可正确获取到datetime对象
        print(type(form.origin_datetime.data))
        print(form.origin_datetime.data)
        # 后续可执行数据存储等操作
    # GET请求或验证失败时的页面渲染逻辑
    return render_template('your_template.html', form=form, load_id=load_id)

额外检查

  • 确认前端的datetime-local控件未被手动修改格式,默认控件会自动生成符合YYYY-MM-DDTHH:MM的字符串。
  • 如果需要支持秒级精度(如YYYY-MM-DDTHH:MM:SS),只需将format参数改为%Y-%m-%dT%H:%M:%S即可。

内容的提问来源于stack exchange,提问作者Mike C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:41:07