使用jinja2在flask WTF表单中预填充一个自引导的日期拾取器日期字段格式



这段代码可以工作,只是填充的日期格式是2000-08-08。日期选择器正在查找01-01-2000。

<form class="form form-inline" method="post" role="form">
{{ form.hidden_tag() }}
{{ wtf.form_errors(form) }}
<input data-provide="datepicker" format="mm/dd/yyyy" id="deadline"  type="text" value="{{ form.deadline.data }}" name="deadline"   required></input>
{{ wtf.form_field(form.complete) }}
{{ wtf.form_field(form.note) }}<br>
{{ wtf.form_field(form.submit) }} 
</form>  

如何更改预填充格式或日期选择器想要的格式?在我的模型中有

deadline =DateField( 'Deadline (mm/dd/yyyy)',  format='%m/%d/%Y',validators = [Required()])

我可以在视图中更改它吗?

@app.route('/edit/<name>', methods=['GET', 'POST'])
def edit_task(name):
    ptask=models.Tasks.query.filter_by(task=task).first()
    form = task_form(obj=ptask)
    form.populate_obj(ptask)
    tform=task_form(request.values)

将格式行更改为

 <input data-provide="datepicker" data-date-format="mm/dd/yyyy" id="deadline"  type="text" value="{{ form.deadline.data }}" name="deadline" required></input>

无效,日期仍然呈现Year/mo/da

但是,将这个添加到我的视图中(如下所示)

ptask=models.Tasks.query.filter_by(task=task).first()
form = task_form(obj=ptask)
form.populate_obj(ptask)
form.deadline.data = ptask.deadline.strftime("%m/%d/%Y")

固定它。由于

对于Bootstrap Datepicker,正确的日期格式属性是文档中提到的data-date-format。更新了日期选择器的代码-

<input data-provide="datepicker" data-date-format="mm/dd/yyyy" id="deadline"  type="text" value="{{ form.deadline.data }}" name="deadline" required></input>

以上更正应该能解决你的问题。但是既然你问了,你也可以在视图中设置所需的日期格式-

form.deadline.data = ptask.deadline.strftime("%m/%d/%Y")

在填充完表单中的其他字段后,可以将这行插入视图代码的最后一行(或倒数第二行)。

最新更新