Tipos de Campos de Formulário - 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
: Gera um campoBooleanField
. Retorna<input type="checkbox">
se o checkbox estiver marcado eTrue
caso contrário.False
: Gera um campoNullBooleanField
com as opções "Unknown", "Yes" e "No":<select>
<select> <option value="1" selected="selected">Unknown</option> <option value="2">Yes</option> <option value="3">No</option> </select>
: Usado para entrada de texto, gera um campoCharField
. Possui os seguintes parâmetros:<input type="text">
: Número máximo de caracteres permitidos.max_length
: Número mínimo de caracteres permitidos.min_length
: Quando definido comostrip
(padrão), remove espaços no início e no final do texto.True
: Define o valor padrão para campos vazios.empty_value
: Usado para entrada de e-mails, gera um campoEmailField
. Aceita os mesmos parâmetros de<input type="email">
.CharField
: Usado para entrada de endereços IP no formato IPv4 ou IPv6, gera um campoGenericIPAddressField
.<input type="text">
: Aceita textos que correspondem a uma expressão regular definida pelo parâmetroRegexField(regex="...")
. Gera um camporegex
.<input type="text">
: Aceita textos no formato "slug", que são sequências de caracteres em minúsculas, números, hifens e underscores. Gera um campoSlugField
.<input type="text">
: Usado para entrada de URLs, gera um campoURLField
.<input type="url">
: Usado para entrada de UUIDs (identificadores únicos universais), gera um campoUUIDField
.<input type="text">
: Combina critérios de validação de vários campos definidos pelo parâmetroComboField(fields=[field1, field2,..])
. Gera um campofields
.<input type="text">
: Usado para criar layouts mais complexos com múltiplos campos.MultiValueField
: Gera um campoFilePathField
que lista arquivos e pastas de um diretório especificado. Parâmetros:<select>
: Caminho absoluto do diretório.path
: Define se arquivos de subdiretórios serão incluídos (False por padrão).recursive
: Aceita uma expressão regular para filtrar os arquivos listados.match
eallow_files
: Indicadores de inclusão de arquivos e pastas (True por padrão).allow_folders
: Usado para upload de arquivos, gera um campoFileField
.<input type="file">
: Similar ao FileField, mas inclui validação adicional para arquivos de imagem.ImageField
,DateField
,TimeField
,DateTimeField
, eDurationField
: Usados para entrada de datas, horários e intervalos, geram campos de entrada baseados em texto.SplitDateTimeField
,IntegerField
, eDecimalField
: Usados para entrada de números, geram camposFloatField
. Parâmetros incluem:<input type="number">
emax_value
: Valores máximo e mínimo permitidos.min_value
: Incremento do número.step_size
: Gera um campoChoiceField
com opções definidas por uma tupla de valores. Exemplo:<select>
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>
: Similar aoTypedChoiceField
, mas permite transformar os valores usando uma função definida no parâmetroChoiceField
.coerce
eMultipleChoiceField
: Semelhantes aos anteriores, mas suportam seleção múltipla ao adicionar o atributoTypedMultipleChoiceField
.multiple="multiple"
: Aceita dados no formato JSON. Parâmetros:JSONField
: Classe para serializar dados em JSON (padrão:encoder
).json.JSONEncoder
: Classe para desserializar dados de JSON (padrão:decoder
).json.JSONDecoder
Widgets no Django
Os campos mencionados utilizam widgets internos do Django para gerar a marcação HTML. Por exemplo:
utiliza o widgetCharField
.forms.widgets.TextInput
utiliza o widgetChoiceField
.forms.widgets.Select
O Django também oferece widgets adicionais que podem ser usados manualmente para personalizar os formulários:
: Gera um campoTextInput
.<input type="text">
: Gera um campoPasswordInput
.<input type="password">
: Gera um campo ocultoHiddenInput
.<input type="hidden">
: Gera múltiplos campos ocultos.MultipleHiddenInput
: Gera um campoTextArea
para entrada de texto em múltiplas linhas.<textarea>
: Gera botões de rádio (RadioSelect
).<input type="radio">
: Gera uma lista de checkboxes.CheckboxSelectMultiple
: Gera um campo para entrada de horários.TimeInput
: Gera três camposSelectDateWidget
para dia, mês e ano.<select>
: Gera um campo oculto para data e hora.SplitHiddenDateTimeWidget
: Gera um campo para seleção de arquivos.FileInput
Por exemplo, para criar um campo de texto com múltiplas linhas:
comment = forms.CharField(widget=forms.Textarea)