我正在构建一个简单的休假管理系统,并且在处理 AdminLTE for Flask(https://appseed.us/admin-dashboards/flask-dashboard-adminlte)时遇到问题,日期时间选择器基于 Tempus Dominus Bootstrap 4(https ://getdatepicker.com/5-4/)
当我执行表单提交时,其他字段已提交,但date_from
and中的数据date_to
没有提交到数据库。
我可以看到我的终端窗口显示“POST 302”并根据我的路由重定向到索引。
这是我的forms.py
class LeaveApplicationForm(FlaskForm):
leavetype = SelectField('Leave Type', choices=[('1', 'Medical Leave'), ('2', 'Annual Leave'),
('3', 'Compassionate Leave'), ('4', 'Unpaid Leave')], validators=[DataRequired()])
date_from = DateField('From', id='date_from', format='%m-%d-%Y')
date_to = DateField('To', id='date_to', format='%m-%d-%Y')
description = TextAreaField('Reason')
submit = SubmitField('Apply')
这是我的routes.py
def leaveapplication():
form = LeaveApplicationForm()
if form.validate_on_submit():
leave = LeaveApplication(user_id=current_user.id ,leavetype_id=form.leavetype.data,
date_created=datetime.utcnow(), date_from=form.date_from.data, date_to=form.date_to.data,
description=form.description.data)
db.session.add(leave)
db.session.commit()
flash('Your application has been sent.')
return redirect(url_for('home_blueprint.index'))
else:
return render_template('leaveapplication.html', form=form)
下面是带有javascript的html
$(function () {
//Date range picker
$('#date_from').datetimepicker({
format: 'L'
});
})
$(function () {
//Date range picker
$('#date_to').datetimepicker({
format: 'L'
});
})
<form action="/leaveapplication" method="post">
{{ form.hidden_tag() }}
<div class="form-group">
{{ form.leavetype.label }}<br>
{{ form.leavetype }}<br>
</div>
<div class="form-group">
<label>{{ form.date_from.label }}</label>
<div class="input-group date" id="date_from" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#date_from"/>
<div class="input-group-append" data-target="#date_from" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
<div class="form-group">
<label>{{ form.date_to.label }}</label>
<div class="input-group date" id="date_to" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#date_to"/>
<div class="input-group-append" data-target="#date_to" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
</div>
<div class="form-group">
<label>{{ form.description.label }}</label>
<textarea class="form-control" name="description" rows="3" placeholder="Provide comments for your approver"></textarea>
</div>
<button class="btn btn-primary" type="submit">Apply</button>
</form>
当我检查我的浏览器 > 网络 > 请求时,我看不到date_to
和 `date_from 内部表单数据。附图。
我想就如何处理这个 datetimepicker 寻求建议,但仍然使用 Tempus Dominus