Menu
CoddyTech

Un formulaire POST

Fait partie de la section Formulaires du Journey Django de Coddy. Leçon 2 sur 20.

La page /events/new/ et sa vue sont prêtes, mais la page ne comporte aucun formulaire pour ajouter un événement. Un formulaire qui modifie des données utilise method="post" : le navigateur envoie les champs dans le corps de la requête, et non dans l’URL. La vue les lit dans request.POST, à partir du name de chaque champ.

Django ajoute une règle. Un autre site pourrait dissimuler un formulaire qui envoie des données à votre site, et le navigateur du visiteur l’enverrait avec ses cookies : une attaque appelée CSRF. Django refuse donc toute requête POST sans jeton secret provenant de votre propre page, avec l’erreur 403 Forbidden. {% csrf_token %} dans le formulaire insère ce jeton. Un formulaire d’inscription à une newsletter :

<form method="post">
    {% csrf_token %}
    <label for="email">Email</label>
    <input id="email" name="email" type="email">
    <button type="submit">Subscribe</button>
</form>

Un élément <label> désigne le champ dont le id correspond à son attribut for, et type="date" affiche un calendrier.

challenge icon

Défi

Facile

Dans new_event.html, écris le formulaire attendu par la vue :

  • Il envoie ses champs avec POST et contient le jeton CSRF.
  • Une entrée, avec une étiquette, pour chaque valeur lue par la vue. Le champ de date affiche un calendrier.
  • Un bouton d’envoi.

Appuie sur Run, ajoute un événement, puis ouvre la page d’accueil.

Essayez vous-même

{% extends "events/base.html" %}

{% block title %}Add an event{% endblock %}

{% block content %}
<h1>Add an event</h1>
{# Écrivez le formulaire ici #}
{% endblock %}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Formulaires

Entraînez-vous par vous-même : Playground Django