Promoção no ar
Tempo restante da oferta:
02 Horas
45 Min
10 Seg
Assinar →

Criando formulários automaticamente com Django

Veja neste artigo como utilizar o Django para renderizar um formulário de cadastro de forma automática sem que precisemos escrever HTML.

Fagner Pinheiro 8 anos atrás

A criação dos formulários de uma aplicação pode se tornar um processo demorado e cansativo, caso tenhamos diversas entidades com vários atributos. Por exemplo, imagine criar os formulários de uma aplicação que possui 20 cadastros com 50 campos cada… É muito HTML, certo!?

Com o Django, podemos simplificar todo este processo criando formulários automaticamente a partir de como os models estão definidos. E é isso que veremos neste artigo :D

Curso Django - Fundamentos Conhecer o curso

Entendendo a aplicação

Vamos partir de uma aplicação pronta que possui apenas uma entidade definida em nosso arquivo models.py, como pode-se ver abaixo:

class Usuario(models.Model):
    SEXO_CHOICES = [
        ["F", "Feminino"],
        ["M", "Masculino"],
        ["N", "Nenhuma das opções"]
    ]

    nome = models.CharField(max_length=20, null=False)
    email = models.EmailField(null=False)
    sexo = models.CharField(max_length=1, choices=SEXO_CHOICES)

Além disso, a aplicação inicial possui um método no arquivo views.py que renderiza o template form.html, o qual nós usaremos para carregar o formulário automático:

from django.shortcuts import render

def cadastrar_usuario(request):
    return render(request, "form.html")

Já o arquivo form.html possui a seguinte estrutura:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Cadastro</title>
</head>
<body>

Aqui será renderizado o formulário de cadastro

</body>
</html>

Criando forms.py

Agora, para gerar nosso formulário de cadastro com base nos campos que definimos no arquivo models.py, precisamos criar o arquivo forms.py. É ele quem é o responsável por determinar quais campos possuirá nosso formulário de cadastro de usuários.

Para criar nosso formulário, utilizaremos como base os tipos e regras de validação que definimos no arquivo models.py. Sendo assim, o arquivo forms.py terá o seguinte conteúdo:

from django import forms
from .models import *

class UsuarioForm(forms.ModelForm):
    class Meta:
        model = Usuario
        fields = ["nome", "email", "sexo"]

Gerando formulário automaticamente

Após criar o arquivo forms.py, podemos utilizá-lo para renderizar nosso formulário sem escrever uma única linha de HTML. Para isso, alteramos o método cadastrar_cliente do arquivo views.py da seguinte forma:

from django.shortcuts import render
from .forms import *

def cadastrar_usuario(request):
    form = UsuarioForm()
    return render(request, "form.html", {'form':form})

Com isso, estamos criando uma instância nova da nossa classe UsuarioForm e a enviando até o arquivo form.html. É lá que renderizamos nosso formulário de cadastro, como podemos ver abaixo:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Cadastro</title>
</head>
<body>
{{ form.as_p }}
</body>
</html>

Apenas utilizando o {{form.as_p}} conseguimos renderizar nosso formulário de cadastro completo. Isso se dá porque o Django converte o código definido no arquivo models.py e cria, para cada atributo da classe Usuario, um input HTML. No final, o resultado da página HTML é o seguinte:

Além disso, cada input gerado possui as regras de validação que determinamos no arquivo models.py, ou seja, todos eles são required e o input de e-mail só irá aceitar um e-mail válido como valor.

Concluindo

Uma das tarefas mais cansativas quando estamos criando aplicações web é a criação dos formulários de cadastro. Com o Django, conseguimos renderizar um formulário automaticamente, poupando tempo no desenvolvimento. Há também formas de estilizar este formulário automaticamente, mas veremos em um artigo futuro. Até lá! :D

Curso Django - Fundamentos Conhecer o curso

Continue lendo

Artigos relacionados

Um ano de acesso total para você viver de programação.

Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro console.log ao mercado de trabalho.

  • 1 ano de acesso a todos os cursos
  • Cursos novos toda semana
  • Suporte direto com professores
  • Plano de carreira personalizado
  • Certificados digitais inclusos
  • Aplicativos para Android e iOS, com acesso offline
Garantia incondicional de satisfação

Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

Acesso completo a todos os cursos e dezenas de Formações.

12 meses
Economize R$ 840,00 54% OFF

de 12x R$ 129,00 por apenas

12x R$ 59,00

sem juros no cartão de crédito ou R$ 599,00 à vista

Oferta termina em 02h 45min 10s

  • Acesso imediato e ilimitado durante 1 ano.
  • Plano de carreira personalizado.
  • Suporte direto com professores.
  • E muito mais!
Matricule-se agora