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

Python-WTForms中Jinja2报str无strftime属性错误的排查与修复请求

错误分析与修复方案:WTForms DateField 引发 AttributeError: 'str' object has no attribute 'strftime'

错误原因

  • 你给DateField设置默认值时,调用了strftime("%Y-%m-%d")——这个方法的作用就是把date/datetime对象转换成字符串,但DateField期望的默认值类型是date对象,而非字符串。
  • 模板渲染时,WTForms内部会尝试对order_date.data(此时是字符串)调用strftime方法,字符串本身没有这个方法,因此抛出AttributeError。

修复方案

1. 修正WTForms字段定义

将默认值改为date对象,无需提前转成字符串,DateField会按照你指定的format参数自动处理格式:

import datetime
from wtforms import DateField

order_date = DateField(
    "Payment Date up to:",
    format="%Y-%m-%d",
    default=datetime.date.today() + datetime.timedelta(days=60)
)

2. 模板代码无需修改

你的HTML模板可以保持原样,DateField会自动将date对象转换为符合format要求的字符串,模板中{{cd.form.order_date.data}}会直接输出YYYY-MM-DD格式的日期字符串。

验证逻辑

修正后,order_date.data的类型为datetime.date对象,WTForms在渲染阶段会自动调用strftime完成格式转换,从根源避免了类型不匹配的问题。如果后续需要在代码中手动格式化日期,再单独调用strftime即可,不要在默认值中提前处理。

内容的提问来源于stack exchange,提问作者Nick210000

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:25:33