Je travaille sur une application Flask simple qui utilise des formes modales Bootstrap, initiées par JavaScript.Flask-wtf perdre la valeur de la variable lorsque le formulaire est soumis à nouveau après l'échec de la validation
En utilisant Flask-WTF
avec une validation de champ, je suis en mesure de soumettre des formulaires très bien tant que tous les champs obligatoires sont remplis. Toutefois, en cas d'erreur de validation, le formulaire n'est pas correctement soumis lorsqu'il est corrigé.
Je reçois un '405 - Méthode non autorisée' car il essaie de se poster sur lui-même.
Je ne comprends pas pourquoi je suis perdre ma variable "url" car il est mis à null
. Toute idée est très appréciée.
Script:
$(document).ready(function() {
// add device button opens modal containing device form loaded via ajax
$('#addSiteBtn').click(function() {
var url = "{{ url_for('core.add_site') }}";
$.get(url, function(data) {
$('#siteDialog .modal-content').html(data);
$('#siteDialog').modal();
$('#submit').click(function(event) {
event.preventDefault();
$.post(url, data=$('#siteForm').serialize(), function(data) {
if (data.status == 'ok') {
$('#siteDialog').modal('hide');
location.reload();
}
else {
$('#siteDialog .modal-content').html(data);
}
});
})
});
});
});
Vue:
@core.route('/sites/add/', methods=['GET', 'POST'])
@login_required
def add_site():
add_site = True
site_form = SiteForm()
if site_form.validate_on_submit():
site = Site(name = site_form.name.data,
descr = site_form.description.data,
addr_01 = site_form.address_01.data,
addr_02 = site_form.address_02.data,
city = site_form.city.data,
state = site_form.state.data,
zip = site_form.zip.data,
phone = site_form.phone.data,
fax = site_form.fax.data
)
try:
db.session.add(site)
db.session.commit()
flash('Site successfully added.')
except:
flash('Error: Site already exists.')
#return redirect(url_for('core.list_sites', page=1))
return jsonify(status='ok')
return render_template('core/sites/add-edit-site.html',
add_site = add_site,
site_form = site_form,
title = "Add Site")
Forme:
{% import "bootstrap/wtf.html" as wtf %}
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="close">
<span aria-hidden="true">×</span>
</button>
<h3 class="modal-title">
{% block title %}
{{ title }}
{% endblock %}
</h3>
</div>
<div class="modal-body">
<form id="siteForm" name="siteForm" class="form" method="post">
{{ wtf.quick_form(site_form) }}
</form>
</div>