Configurando Formulários e Seus Campos no 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":
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.
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.
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 blocodiv
.
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>
Documentação oficial: