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')