Atualizado: 12/01/2025

Configurando Formulários e Seus Campos - Django

O Django permite configurar vários aspectos de um formulário e de seus campos, possibilitando personalizações na aparência, valores padrão e comportamento.

Labels para os Campos

A propriedade label define o texto exibido ao lado do campo no formulário. Por padrão, o Django utiliza o nome do campo com a primeira letra em maiúsculo. Por exemplo:

from django import forms

class UserForm(forms.Form):
    name = forms.CharField(label="Nome")
    age = forms.IntegerField(label="Idade")

Essa configuração cria um formulário com os campos "Nome" e "Idade":

Formulário com campos Nome e Idade

Widgets

O parâmetro widget especifica o tipo de widget utilizado para gerar a marcação HTML do campo. Por padrão, CharField utiliza o widget forms.widgets.TextInput, que gera um campo de texto de uma linha. Para criar um campo de texto com múltiplas linhas, pode ser usado o widget forms.Textarea. Exemplo:

from django import forms

class UserForm(forms.Form):
    name = forms.CharField(label="Nome")
    comment = forms.CharField(label="Comentário", widget=forms.Textarea)

Os widgets determinam a aparência e o comportamento do campo no HTML, permitindo personalizações conforme necessário.

Formulário com campos Nome e Idade

Valores Padrão

Com o parâmetro initial, é possível definir valores padrão para os campos. Esses valores são exibidos nos campos quando o formulário é renderizado pela primeira vez:

from django import forms

class UserForm(forms.Form):
    name = forms.CharField(initial="undefined")
    age = forms.IntegerField(initial=18)

Essa configuração é útil para fornecer sugestões ou valores iniciais para os usuários.

Ordem dos Campos

Os campos de entrada são exibidos na página web na mesma ordem em que foram definidos na classe do formulário. Caso seja necessário alterar essa ordem, a propriedade field_order pode ser usada diretamente na classe ou ao instanciar o formulário na view.

Exemplo de uso na classe do formulário:

class UserForm(forms.Form):
    name = forms.CharField()
    age = forms.IntegerField()
    field_order = ["age", "name"]

Exemplo na view:

def index(request):
    userform = UserForm(field_order=["age", "name"])
    return render(request, "index.html", {"form": userform})

Textos de Ajuda help_text

O parâmetro help_text adiciona uma dica ou orientação próxima ao campo de entrada, auxiliando os usuários no preenchimento correto dos dados:

from django import forms

class UserForm(forms.Form):
    name = forms.CharField(help_text="Insira seu nome completo")
    age = forms.IntegerField(help_text="Insira sua idade")

Esse recurso é especialmente útil para formular informações complementares aos usuários.

Textos de ajuda help_text em Django

Configuração do Layout HTML de Formulários

O Django oferece métodos para ajustar o layout geral do formulário, controlando como os campos são exibidos no HTML. Esses métodos incluem:

  • as_table(): Exibe os campos como linhas de uma tabela.

  • as_ul(): Exibe os campos como itens de uma lista não ordenada.

  • as_p(): Exibe cada campo em um parágrafo.

  • as_div(): Exibe cada campo em um bloco div.

Exemplo de aplicação:

<h2>as_table</h2>
<form method="POST">
    {% csrf_token %}
    <table>
        {{ form.as_table }}
    </table>
    <input type="submit" value="Enviar">
</form>

<h2>as_ul</h2>
<form method="POST">
    {% csrf_token %}
    <ul>
        {{ form.as_ul }}
    </ul>
    <input type="submit" value="Enviar">
</form>

<h2>as_p</h2>
<form method="POST">
    {% csrf_token %}
    <div>
        {{ form.as_p }}
    </div>
    <input type="submit" value="Enviar">
</form>
Configuração do layout HTML do formulário
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