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
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
CharField
forms.widgets.TextInput
forms.Textarea
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
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
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
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:
: Exibe os campos como linhas de uma tabela.as_table()
: Exibe os campos como itens de uma lista não ordenada.as_ul()
: Exibe cada campo em um parágrafo.as_p()
: Exibe cada campo em um blocoas_div()
.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>
