Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
python:flask:formulaires [2023/11/02 07:04] marclebrun |
python:flask:formulaires [2023/11/10 07:16] (Version actuelle) marclebrun [Traitement] |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
Définition du formulaire dans une classe. | Définition du formulaire dans une classe. | ||
- | |||
- | :!: **Note:** Ne pas appeler les boutons "**submit**" et "**cancel**" car sinon | ||
- | la fonction **submit()** du formulaire n'est plus disponible en javascript. | ||
- | J'ai pris l'habitude d'appeler mes boutons "**btnSubmit**" et "**btnCancel**". | ||
<code python> | <code python> | ||
Ligne 21: | Ligne 17: | ||
('f', u"Féminin"), | ('f', u"Féminin"), | ||
]) | ]) | ||
- | actif = BooleanField(u"Actif") | + | actif = BooleanField(u"Actif") |
- | btnSubmit = SubmitField(u"Enregistrer") | + | submit = SubmitField(u"Enregistrer") |
- | btnCancel = SubmitField(u"Annuler") | + | |
</code> | </code> | ||
Ligne 33: | Ligne 28: | ||
<form action="" method="post"> | <form action="" method="post"> | ||
{{ form.hidden_tag() }} | {{ form.hidden_tag() }} | ||
+ | | ||
<div class="form-group"> | <div class="form-group"> | ||
{{ form.nom.label(class="form-label") }} | {{ form.nom.label(class="form-label") }} | ||
{{ form.nom(class="form-input") }} | {{ form.nom(class="form-input") }} | ||
</div> | </div> | ||
+ | | ||
<div class="form-group"> | <div class="form-group"> | ||
{{ form.prenom.label(class="form-label") }} | {{ form.prenom.label(class="form-label") }} | ||
{{ form.prenom(class="form-input") }} | {{ form.prenom(class="form-input") }} | ||
</div> | </div> | ||
+ | | ||
<div class="form-group"> | <div class="form-group"> | ||
{{ form.genre.label(class="form-label") }} | {{ form.genre.label(class="form-label") }} | ||
- | {{ form.genre(class="form-input") }} | + | {{ form.genre(class="form-select") }} |
+ | </div> | ||
+ | |||
+ | <div> | ||
+ | {{ form.submit(class="btn btn-primary") }} | ||
+ | <a class="btn btn-secondary" href="javascript:history.back()">Annuler</a> | ||
</div> | </div> | ||
- | {{ form.btnSubmit(class="btn btn-primary") }} | ||
- | {{ form.btnCancel(class="btn btn-secondary") }} | ||
</form> | </form> | ||
</code> | </code> | ||
Ligne 73: | Ligne 74: | ||
form = PersonneEditForm() | form = PersonneEditForm() | ||
| | ||
- | # si le formulaire a été soumis | + | # si le formulaire a été soumis et validé |
- | if form.is_submitted(): | + | if form.validate_on_submit(): |
| | ||
- | # si on a validé avec le bouton "Annuler" | + | # enregistrer l'objet |
- | if form.btnCancel.data: | + | personne.nom = form.nom.data |
- | return redirect(url_for('personnes.index')) | + | personne.prenom = form.prenom.data |
- | + | personne.genre = form.genre.data | |
- | # si on a validé avec le bouton "Enregistrer" | + | if id == 0: |
- | if form.btnSubmit.data: | + | # si 0 on est dans l'ajout d'un nouvel objet |
- | # si tous les champs du formulaire sont valides | + | db.session.add(personne) |
- | if form.validate(): | + | # valider l'enregistrement dans la db |
- | # enregistrer l'objet | + | db.session.commit() |
- | personne.nom = form.nom.data | + | |
- | personne.prenom = form.prenom.data | + | |
- | personne.genre = form.genre.data | + | |
- | if id == 0: | + | |
- | # si 0 on est dans l'ajout d'un nouvel objet | + | |
- | db.session.add(personne) | + | |
- | # valider l'enregistrement dans la db | + | |
- | db.session.commit() | + | |
| | ||
- | # rediriger vers l'index | + | # rediriger vers l'index |
- | return redirect(url_for('personnes.index')) | + | return redirect(url_for('personnes.index')) |
| | ||
# sinon il faut le remplir et l'afficher | # sinon il faut le remplir et l'afficher |