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 una fecha y el sitio falla: 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, por lo que un nombre compuesto solo por espacios cuenta como vacío.
En la vista, crea el formulario con los datos recibidos y llama a is_valid(): comprueba cada campo 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ácil- En
events/forms.py, escribeEventForm:titleyplacecomo texto de un máximo de 100 caracteres, ydatecomo fecha. - En
new_event, comprueba el POST con él. Si es válido, crea el evento a partir de los valores convertidos y redirige. Si no, muestra la página conerrorestablecido enPlease check the form.
Pulsa Ejecutar y envía el formulario sin fecha.
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