Я пытаюсь решить странную проблему с проверкой формы в модальных формах. Flask и WTF используется. Основанный на Bootstrap Модальный с WTF Я сделал это, чтобы работать, но только один раз. При отправке формы отображаются ошибки, но если я хочу отправить снова, модальное окно просто закрывается и страница перезагружается.
route.py
@blueprint.route('/add_vrf', methods=['GET', 'POST'])
@login_required
def add_vrf():
add_vrf_form = AddVrfForm(request.form)
if add_vrf_form.validate_on_submit():
return jsonify(status='ok')
return render_template('vrf/add_vrf_modal.html', form=add_vrf_form)
vrf. html
<button type="submit" data-toggle="modal" data-target="#add_vrf_modal" class="btn btn-primary">Add new VRF</button>
<div class="modal fade" id="add_vrf_modal" name="add_vrf_modal">
<div class="modal-dialog">
<div class="modal-content">
{% include 'vrf/add_vrf_modal.html' %}
</div>
</div>
</div>
add_vrf_modal. html
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span></button>
<h4 class="modal-title">Add VRF</h4>
</div>
<div class="modal-body">
<form id="add_vrf_form" role="form" method="post">
*...some form code...*
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal">Close</button>
<button type="submit" id='add_vrf' name="add_vrf" class="btn btn-primary">Add</button>
</div>
**javascript**
$('#add_vrf').click(function(event) {var url = "{{ url_for('home_blueprint.add_vrf') }}";
event.preventDefault();
$.post(url, data=$('#add_vrf_form').serialize(), function(data) {
if (data.status == 'ok') {
$('#add_vrf_modal').modal('hide');
location.reload();
}
else {
$("#add_vrf_modal .modal-content").html(data);
}
});
})
});
Вывод из FLASK отладка:
При первом нажатии кнопки «ADD VRF» с ошибкой в поле формы
[20 / Apr / 2020 08:31:56] «POST / add_vrf HTTP / 1.1» 200
Второй раз нажал кнопку «ADD VRF» с ошибкой в поле формы
[20 / Apr / 2020 08:32:04] «POST / vrf HTTP / 1.1» 200 -