如何在jinja2模板中显示日期时间字段?(使用flask)

3
我有一个表单,包含这两个值(ndb是Google App Engine的ndb模型):
模型:
class Appointment(model.Base):
    start_time = ndb.DateTimeProperty(required=True)
    end_time = ndb.DateTimeProperty(required=True)

表单(使用wtforms):

class AppointmentUpdateForm(wtf.Form):
    start_time = wtforms.DateField('Start at', [wtforms.validators.required()])
    end_time = wtforms.DateField('End at', [wtforms.validators.required()])

而在jinja2模板中,我有:

  {{forms.date_field(form.start_time, format='%Y-%m-%d %H:%M:%S')}}
  {{forms.date_field(form.end_time)}}

我想将表单输入显示为时间小部件,但它看起来像日期字段。我认为wtforms有一个date_time字段,但是我该如何实现?

你的意思是wtforms.DateTimeField不能满足你的需求吗? - Greg
1
我想要在模板中正确地显示和渲染它。 - Nima
也许我没有表达清楚。你的表单类正在使用 DateField,而不是 DateTimeField。 - Greg
1个回答

6
如果您想要显示日期时间小部件,您需要创建一个自定义小部件。在定义表单时,将自己的小部件传递给它。
关于小部件,请看下面的例子:

https://github.com/dpgaspar/Flask-AppBuilder/blob/master/flask_appbuilder/fieldwidgets.py#L5

然后像这样定义表单:
class AppointmentUpdateForm(wtf.Form):
    start_time = wtforms.DateField('Start at', [wtforms.validators.required()], widget=DatePickerWidget())
    end_time = wtforms.DateField('End at', [wtforms.validators.required()], widget=DatePickerWidget())

请记住,这是使用Bootstrap日期选择器,因此您需要包含CSS和js文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接