Creare un modulo
Fa parte della sezione Form del percorso Django di Coddy. Lezione 6 di 20.
La pagina /events/new/ scrive a mano ogni etichetta e ogni campo di input, e EventForm elenca di nuovo gli stessi campi. Un modulo può generarsi da solo: passane uno al template e scrivi {{ form }} all'interno del tag <form>. Una pagina di contatto:
<form method="post">
{% csrf_token %}
{{ form }}
<button type="submit">Send</button>
</form>{{ form }} scrive un'etichetta e un campo di input per ogni campo, nell'ordine in cui la classe li dichiara. Ogni campo di input riceve il name del campo e un id come id_email, così la relativa etichetta vi fa riferimento. Il tag del modulo, il token e il pulsante restano a te.
Un modulo in cui non è ancora stato inserito nulla è la classe chiamata senza dati: ContactForm(). Django contrassegna inoltre i campi di input obbligatori con required, così il browser impedisce l'invio di un campo vuoto. Ora il campo della data è testo semplice, perché Django genera un DateField come testo. Inserisci le date in questo formato: 2031-12-05.
Sfida
FacileLascia che EventForm generi i propri campi.
- In
new_event, passa al template unEventFormvuoto comeform. - In
new_event.html, sostituisci le tre etichette e gli input con{{ form }}, che li genera per te. Mantieni il tag form, il token, il pulsante e il messaggio di errore.
Aggiungi un evento con data 2031-12-05: Django ha generato tutte le etichette e arrivi alla pagina dell'evento.
Provalo tu
{% extends "events/base.html" %}
{% block title %}Add an event{% endblock %}
{% block content %}
<h1>Add an event</h1>
{% if error %}
<p class="error">{{ error }}</p>
{% endif %}
<form method="post">
{% csrf_token %}
<label for="title">Title</label>
<input id="title" name="title">
<label for="date">Date</label>
<input id="date" name="date" type="date">
<label for="place">Place</label>
<input id="place" name="place">
<button type="submit">Add event</button>
</form>
{% endblock %}
Tutte le lezioni di Form
Esercitati da solo: Playground Django