Formulaires
Documentation / Formulaires / Rendu dans les templates

Rendu dans les templates

Formulaire complet

<form method="post">
  {% form.inscription_form %}
  <button type="submit">S'inscrire</button>
</form>

Rend automatiquement : tous les champs, les labels, les erreurs de validation, le token CSRF et les scripts JS.


Champ par champ

<form method="post">
  <div class="row">
    <div class="col-6">{% form.inscription_form.username %}</div>
    <div class="col-6">{% form.inscription_form.email %}</div>
  </div>
  {% form.inscription_form.password %}
  <button type="submit">S'inscrire</button>
</form>

Le premier champ déclaré du formulaire emporte avec lui les champs cachés (jeton CSRF et nom du formulaire), où qu'il soit placé dans le template. Rendez-les tous, ou au moins ce premier champ : sans lui, l'envoi est refusé (CSRF) ou ignoré (nom absent).


Erreurs globales

{% if inscription_form.form_errors %}
<div class="alert alert-danger">
  {% for msg in inscription_form.form_errors %}
  <p>{{ msg }}</p>
  {% endfor %}
</div>
{% endif %}

form_errors → Vec<String> — erreurs non liées à un champ (ex: "Identifiants invalides"). errors → map { field_name: message } — erreurs par champ + erreurs globales sous la clé global.


Données de champ en JSON

Les formulaires sérialisent automatiquement errors, form_errors, html, rendered_fields, fields, js_files, rendered_js (le bloc <script> déjà rendu, avec le nonce CSP) et honeypot_html (le champ piège de l'anti-bot, vide sans lui).


← Erreurs de base de données | Exemple complet →