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 converter 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 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ê indique o contrário, e um CharField remove os espaços primeiro, então um nome composto apenas por espaços é considerado 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. Então, form.cleaned_data contém os valores convertidos para Python, portanto 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

Deixe um formulário do Django verificar o novo evento.

  1. Em events/forms.py, escreva EventForm: title e place como texto de até 100 caracteres, date como uma data.
  2. Em new_event, crie o formulário a partir de request.POST. Se for válido, crie o evento a partir de form.cleaned_data e redirecione para ele. Caso contrário, defina error como Please check the form.

Envie o formulário sem uma data: você verá Verifique o formulário.

Experimente você mesmo

from django import forms

Todas as lições de Forms

Pratique por conta própria: Playground de Django