Menu
CoddyTech

Verificando um campo

Parte da seção Forms do Journey de Django da Coddy. Lição 10 de 20.

O quadro aceita eventos datados do ano passado. As regras integradas conhecem os tipos e os limites, mas não o seu site. Uma regra própria para um campo deve ficar em um método chamado clean_ seguido pelo nome do campo. Um formulário de inscrição 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 username

is_valid() chama esse método depois das verificações do próprio campo, então o valor já foi convertido: um DateField fornece uma data. Lançar forms.ValidationError rejeita o campo, e a mensagem aparece abaixo dele.

O método deve retornar o valor: o que ele retorna é armazenado em cleaned_data. Sem o return, o valor se torna None.

challenge icon

Desafio

Fácil

Em EventForm, rejeite uma data anterior a hoje com a mensagem The date cannot be in the past. Uma data de hoje é válida.

Pressione Run e adicione um evento com a data de ontem.

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

Pratique por conta própria: Playground de Django