Menu
CoddyTech

Um formulário do Django

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

Envie o formulário sem uma data e o site trava: o Django não consegue transformar texto vazio em uma data. Verificar cada campo manualmente exigiria código para cada campo e cada erro.

Um formulário do Django descreve os campos uma única vez, em forms.py, e cada campo sabe o que aceita. O formulário de reserva de um restaurante:

from django import forms


class BookingForm(forms.Form):
    name = forms.CharField(max_length=50)
    day = forms.DateField()
    guests = forms.IntegerField()

Todos os campos são obrigatórios, a menos que você especifique o contrário, e um CharField remove os espaços primeiro, então um nome composto apenas por espaços conta como vazio.

Na view, crie o formulário com os dados recebidos e chame is_valid(): ele verifica todos os campos e retorna True ou False. Em seguida, form.cleaned_data contém os valores convertidos para Python, então cleaned_data["day"] é um datetime.date, não texto:

form = BookingForm(request.POST)
if form.is_valid():
    day = form.cleaned_data["day"]
challenge icon

Desafio

Fácil
  • Em events/forms.py, escreva EventForm: title e place como texto com no máximo 100 caracteres, e date como uma data.
  • Em new_event, verifique o POST usando esse formulário. Se for válido, crie o evento com os valores convertidos e redirecione. Caso contrário, renderize a página com error definido como Please check the form.

Clique em Run e envie o formulário sem informar uma data.

Experimente você mesmo

from django import forms

Todas as lições de Forms

Pratique por conta própria: Playground de Django