Validar un campo
Parte de la sección Formularios del Journey de Django de Coddy. Lección 10 de 20.
El tablero acepta eventos fechados el año pasado. Las reglas integradas conocen los tipos y los límites, no tu sitio. Una regla propia para un campo va en un método llamado clean_ más el nombre del campo. Un formulario de registro que reserva el nombre admin para el personal:
class SignupForm(forms.Form):
username = forms.CharField(max_length=30)
def clean_username(self):
username = self.cleaned_data["username"]
if username.lower() == "admin":
raise forms.ValidationError("That name is reserved.")
return usernameis_valid() lo llama después de las comprobaciones propias del campo, así que el valor ya está convertido: un DateField proporciona una fecha. Al generar forms.ValidationError, se rechaza el campo y el mensaje aparece debajo.
El método debe devolver el valor: lo que devuelve se guarda en cleaned_data. Sin el return, el valor se convierte en None.
Desafío
FácilEn EventForm, rechaza una fecha anterior a hoy con el mensaje The date cannot be in the past. Una fecha de hoy es válida.
Pulsa Run y añade un evento con fecha de ayer.
Pruébalo tú mismo
from django import forms
class EventForm(forms.Form):
title = forms.CharField(max_length=100)
date = forms.DateField()
place = forms.CharField(max_length=100)
description = forms.CharField(widget=forms.Textarea, required=False)
capacity = forms.IntegerField(min_value=1)
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