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">. RetornaTruese o checkbox estiver marcado eFalsecaso 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_fileseallow_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_valueemin_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.MultipleChoiceFieldeTypedMultipleChoiceField: 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:
CharFieldutiliza o widgetforms.widgets.TextInput.ChoiceFieldutiliza 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: