Tipos de Campos de Formulário no Django
No Django, diferentes tipos de campos são usados para criar formulários com funcionalidades específicas. Esses campos são implementados como classes e geram automaticamente a marcação HTML correspondente.
Tipos de Campos Disponíveis
BooleanField
: Gera um campo<input type="checkbox">
. RetornaTrue
se o checkbox estiver marcado eFalse
caso contrário.NullBooleanField
: Gera um campo<select>
com as opções "Unknown", "Yes" e "No":<select> <option value="1" selected="selected">Unknown</option> <option value="2">Yes</option> <option value="3">No</option> </select>
CharField
: Usado para entrada de texto, gera um campo<input type="text">
. Possui os seguintes parâmetros:max_length
: Número máximo de caracteres permitidos.min_length
: Número mínimo de caracteres permitidos.strip
: Quando definido comoTrue
(padrão), remove espaços no início e no final do texto.empty_value
: Define o valor padrão para campos vazios.
EmailField
: Usado para entrada de e-mails, gera um campo<input type="email">
. Aceita os mesmos parâmetros deCharField
.GenericIPAddressField
: Usado para entrada de endereços IP no formato IPv4 ou IPv6, gera um campo<input type="text">
.RegexField(regex="...")
: Aceita textos que correspondem a uma expressão regular definida pelo parâmetroregex
. Gera um campo<input type="text">
.SlugField
: Aceita textos no formato "slug", que são sequências de caracteres em minúsculas, números, hifens e underscores. Gera um campo<input type="text">
.URLField
: Usado para entrada de URLs, gera um campo<input type="url">
.UUIDField
: Usado para entrada de UUIDs (identificadores únicos universais), gera um campo<input type="text">
.ComboField(fields=[field1, field2,..])
: Combina critérios de validação de vários campos definidos pelo parâmetrofields
. Gera um campo<input type="text">
.MultiValueField
: Usado para criar layouts mais complexos com múltiplos campos.FilePathField
: Gera um campo<select>
que lista arquivos e pastas de um diretório especificado. Parâmetros:path
: Caminho absoluto do diretório.recursive
: Define se arquivos de subdiretórios serão incluídos (False por padrão).match
: Aceita uma expressão regular para filtrar os arquivos listados.allow_files
eallow_folders
: Indicadores de inclusão de arquivos e pastas (True por padrão).
FileField
: Usado para upload de arquivos, gera um campo<input type="file">
.ImageField
: Similar ao FileField, mas inclui validação adicional para arquivos de imagem.DateField
,TimeField
,DateTimeField
,DurationField
, eSplitDateTimeField
: Usados para entrada de datas, horários e intervalos, geram campos de entrada baseados em texto.IntegerField
,DecimalField
, eFloatField
: Usados para entrada de números, geram campos<input type="number">
. Parâmetros incluem:max_value
emin_value
: Valores máximo e mínimo permitidos.step_size
: Incremento do número.
ChoiceField
: Gera um campo<select>
com opções definidas por uma tupla de valores. Exemplo:languages = forms.ChoiceField(choices=((1, "English"), (2, "German"), (3, "French")))
Gera:
<select name="languages" id="id_languages"> <option value="1">English</option> <option value="2">German</option> <option value="3">French</option> </select>
TypedChoiceField
: Similar aoChoiceField
, mas permite transformar os valores usando uma função definida no parâmetrocoerce
.MultipleChoiceField
eTypedMultipleChoiceField
: Semelhantes aos anteriores, mas suportam seleção múltipla ao adicionar o atributomultiple="multiple"
.JSONField
: Aceita dados no formato JSON. Parâmetros:encoder
: Classe para serializar dados em JSON (padrão:json.JSONEncoder
).decoder
: Classe para desserializar dados de JSON (padrão:json.JSONDecoder
).
Widgets no Django
Os campos mencionados utilizam widgets internos do Django para gerar a marcação HTML. Por exemplo:
CharField
utiliza o widgetforms.widgets.TextInput
.ChoiceField
utiliza o widgetforms.widgets.Select
.
O Django também oferece widgets adicionais que podem ser usados manualmente para personalizar os formulários:
TextInput
: Gera um campo<input type="text">
.PasswordInput
: Gera um campo<input type="password">
.HiddenInput
: Gera um campo oculto<input type="hidden">
.MultipleHiddenInput
: Gera múltiplos campos ocultos.TextArea
: Gera um campo<textarea>
para entrada de texto em múltiplas linhas.RadioSelect
: Gera botões de rádio (<input type="radio">
).CheckboxSelectMultiple
: Gera uma lista de checkboxes.TimeInput
: Gera um campo para entrada de horários.SelectDateWidget
: Gera três campos<select>
para dia, mês e ano.SplitHiddenDateTimeWidget
: Gera um campo oculto para data e hora.FileInput
: Gera um campo para seleção de arquivos.
Por exemplo, para criar um campo de texto com múltiplas linhas:
comment = forms.CharField(widget=forms.Textarea)
Documentação oficial: