Atualizado: 12/01/2025

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

  • BooleanField: Gera um campo <input type="checkbox">. Retorna True se o checkbox estiver marcado e False 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 como True (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 de CharField.

  • 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âmetro regex. 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âmetro fields. 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 e allow_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, e SplitDateTimeField: Usados para entrada de datas, horários e intervalos, geram campos de entrada baseados em texto.

  • IntegerField, DecimalField, e FloatField: Usados para entrada de números, geram campos <input type="number">. Parâmetros incluem:

    • max_value e min_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 ao ChoiceField, mas permite transformar os valores usando uma função definida no parâmetro coerce.

  • MultipleChoiceField e TypedMultipleChoiceField: Semelhantes aos anteriores, mas suportam seleção múltipla ao adicionar o atributo multiple="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 widget forms.widgets.TextInput.

  • ChoiceField utiliza o widget forms.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)
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com