Un formulario de Django
Parte de la sección Formularios del Journey de Django de Coddy. Lección 5 de 20.
Envías el formulario sin fecha y el sitio se bloquea: Django no puede convertir texto vacío en una fecha. Comprobar cada campo a mano requeriría código para cada campo y cada error.
Un formulario de Django describe los campos una sola vez, en forms.py, y cada campo sabe qué acepta. El formulario de reserva de un restaurante:
from django import forms
class BookingForm(forms.Form):
name = forms.CharField(max_length=50)
day = forms.DateField()
guests = forms.IntegerField()Todos los campos son obligatorios a menos que indiques lo contrario, y un CharField elimina primero los espacios, así que un nombre compuesto solo por espacios cuenta como vacío.
En la vista, crea el formulario con lo que llegó y llama a is_valid(): comprueba todos los campos y devuelve True o False. Después, form.cleaned_data contiene los valores convertidos a Python, así que cleaned_data["day"] es un datetime.date, no texto:
form = BookingForm(request.POST)
if form.is_valid():
day = form.cleaned_data["day"]Desafío
FácilHaz que un formulario de Django compruebe el nuevo evento.
- En
events/forms.py, escribeEventForm:titleyplacecomo texto de hasta 100 caracteres, ydatecomo fecha. - En
new_event, crea el formulario a partir derequest.POST. Si es válido, crea el evento a partir deform.cleaned_datay redirige a él. Si no, asignaerroraPlease check the form.
Envía el formulario sin fecha: verás «Comprueba el formulario».
Pruébalo tú mismo
from django import forms
Todas las lecciones de Formularios
2Formularios de Django
Un formulario de DjangoDibujar un formulario5Proyecto: Lista de invitados
Una confirmación de asistencia por correo electrónicoUna página para invitadosPractica por tu cuenta: Playground de Django