Verificando um campo
Parte da seção Forms do Journey de Django da Coddy. Lição 10 de 20.
O formulário aceita um evento datado do ano passado. As verificações integradas do Django conhecem os tipos e os limites, mas não as regras do seu site. Uma regra própria para um campo vai em um método chamado clean_ seguido do nome do campo. Um formulário de cadastro que reserva o nome admin para a equipe:
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() o chama depois das verificações do próprio campo, então o valor já foi convertido: um DateField fornece uma data. Lançar forms.ValidationError recusa o campo, e a mensagem aparece ao lado dele.
O método precisa retornar o valor: o que ele retorna vai para cleaned_data. Sem o return, o valor se torna None.
Desafio
FácilEm EventForm, rejeite uma data anterior a hoje com a mensagem The date cannot be in the past. Um evento marcado para hoje é válido.
Adicione um evento com a data de ontem, digitada como 2026-10-30: você verá The date cannot be in the past.
Experimente você mesmo
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 as lições de Forms
2Formulários do Django
Um formulário do DjangoCriando um formulárioPratique por conta própria: Playground de Django