Python WTForms-DateTimeLocalField数据在提交后为无

Python WTForms-DateTimeLocalField数据在提交后为无,python,forms,flask,wtforms,Python,Forms,Flask,Wtforms,表单随POST请求提交后,每个字段数据都有其值,除了DateTimeLocalField。访问DateTimeLocalField的数据值属于None类型 表格 class ArticleForm(FlaskForm): name = StringField('Name', validators=[DataRequired()]) category = SelectField(u'Category', choices=categories.choices) town =

表单随
POST
请求提交后,每个
字段
数据都有其值,除了
DateTimeLocalField
。访问DateTimeLocalField的数据值属于
None
类型

表格

class ArticleForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    category = SelectField(u'Category', choices=categories.choices)
    town = StringField('Town', validators=[DataRequired()])
    minimal_price = IntegerField('Minimal price')
    article_image = FileField('Article_image', validators=[FileRequired()])
    time_left = DateTimeLocalField('Time to end', validators=[InputRequired()],
                              format='%Y-%m-%d %H:%M:%S')
    description = TextAreaField('Description', validators=[DataRequired()])
验证:(使用
测试已提交
,除了
文章(表格)时间(剩余时间)数据
无)

if article\u form.validate\u on\u submit():
新建文章=文章(名称=文章形式.name.data,
类别=物品_form.category.data,
town=文章形式为town.data,
最低价格=商品形式。最低价格。数据,
article_image=名称,

time_left=article_form.time_left.data,#尝试从

format='%Y-%m-%d %H:%M:%S' 
致:


提示:您可以在验证之前打印输入字段的实际内容,以确认
DateTimeLocalField
字段的格式是否正确。

我对同一问题进行了广泛的研究,这是一个黑客攻击,但我仍然从标签中获得了时间戳,看起来像:

<input id="time_left" name="time_left" required type="datetime-local" value="2018-11-15T04:44">

让我知道该解决方案是否对您有效,或者是否找到了更好的解决方案。

使用
wtforms.fields.html5.DateTimeLocalField
而不是
wtforms.DateTimeLocalField
。设置格式,日期和时间之间用“T”分隔。如果希望当前时间作为默认值,请设置默认参数

from wtforms.fields.html5 import DateTimeLocalField

class InterviewForm(Form):
    posted = DateTimeLocalField('Posted:', default=datetime.today, format='%Y-%m-%dT%H:%M')

您好。我知道您是堆栈新手,非常欢迎。我使用上面的答案获得了它,我将它标记为一个完整的解决方案。您提供的解决方案可能有效,但它相当复杂。Python和WTForms都有日期和时间的格式化,只是它没有在WTForms中记录,而是在Python中记录。这就是我不知道如何格式化时间的原因。请参阅li中表格中的更多信息nk
<input id="time_left" name="time_left" required type="datetime-local" value="2018-11-15T04:44">
date = re.search('(\d{4})[/.-](\d{2})[/.-](\d{2})[T](\d{2})[:](\d{2})',
          str(form.time_left)).group())
from wtforms.fields.html5 import DateTimeLocalField

class InterviewForm(Form):
    posted = DateTimeLocalField('Posted:', default=datetime.today, format='%Y-%m-%dT%H:%M')