Menu
CoddyTech

Un modulo POST

Fa parte della sezione Form del percorso Django di Coddy. Lezione 2 di 20.

La pagina /events/new/ e la relativa vista sono pronte, ma la pagina non ha un modulo per aggiungere un evento. Un modulo che modifica i dati usa method="post": il browser invia i campi nel corpo della richiesta, non nell'URL. La vista li legge da request.POST, identificandoli tramite il name di ciascun campo di input.

Django aggiunge una regola. Un altro sito web potrebbe nascondere un modulo che invia dati al tuo sito e il browser del visitatore lo invierebbe insieme ai suoi cookie: si tratta di un attacco chiamato CSRF. Perciò Django rifiuta qualsiasi POST privo di un token segreto proveniente dalla tua pagina, restituendo 403 Forbidden. {% csrf_token %} all'interno del modulo inserisce quel token. Un modulo per iscriversi a una 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 <label> indica il campo di input il cui id corrisponde al suo for, mentre type="date" visualizza un calendario.

challenge icon

Sfida

Facile

In new_event.html, scrivi il modulo che la vista si aspetta:

  • Invia i suoi campi con POST e include il token CSRF.
  • Un campo di input, con un'etichetta, per ogni valore letto dalla vista. Il campo data mostra un calendario.
  • Un pulsante di invio.

Premi Run, aggiungi un evento, poi apri la home page.

Provalo tu

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

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

{% block content %}
<h1>Add an event</h1>
{# Scrivi il modulo qui #}
{% endblock %}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Form

Esercitati da solo: Playground Django