Atualizado: 14/06/2025

Este conteúdo é original e não foi gerado por inteligência artificial.

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">. 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)

Documentação oficial:

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