Criando formulários automaticamente com Django \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 01 Horas 

 41 Min 

 06 Seg 

   Tempo restante da oferta: 01 41 06 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Criando formulários automaticamente com Django  [ HTML ](https://www.treinaweb.com.br/blog/categoria/html) [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) [ Python ](https://www.treinaweb.com.br/blog/categoria/python) [ Django ](https://www.treinaweb.com.br/blog/categoria/django) 

# 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 ](https://www.treinaweb.com.br/blog/autor/fagner-pinheiro) 8 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/01/11101814/DJANGO-FORMS.png)  

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

[  ![Django - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/django.svg)   Curso Django - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/django-fundamentos)

## 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:

```python
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:

```python
from django.shortcuts import render

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

```

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

```html

    Cadastro

Aqui será renderizado o formulário de cadastro

```

## 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:

```python
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:

```python
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:

```html

    Cadastro

{{ form.as_p }}

```

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:

![](https://dkrn4sk0rn31v.cloudfront.net/2019/01/10161646/Captura-de-Tela-2019-01-10-a%CC%80s-15.16.33.png)

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.

![](https://dkrn4sk0rn31v.cloudfront.net/2019/01/10161920/Captura-de-Tela-2019-01-10-a%CC%80s-15.19.02.png)

## 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

[  ![Django - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/django.svg)   Curso Django - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/django-fundamentos)

- [ #HTML5 ](https://www.treinaweb.com.br/blog/tag/html5)
- [ #Django ](https://www.treinaweb.com.br/blog/tag/django)

Autor

 ![Fagner Pinheiro](//secure.gravatar.com/avatar/e622f7c7d686a0b11f8d977ce9725b67?d=mm)

## Fagner Pinheiro

 Professor na TreinaWeb e graduado em Sistemas de Informação pelo Instituto Federal da Bahia. Apaixonado por desenvolvimento web, desktop e mobile desde os 12 anos de idade. Já utilizou todos os sistemas operacionais possíveis, mas hoje se contenta com o OSX instalado em seu desktop. Quando não está trabalhando, é IGL e Awper do time de CS:GO da Treinaweb. Até passou em uma peneira do Cruzeiro, mas preferiu estudar Python. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/fagner-pinheiro)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/01/17112940/django-forms1-400x280.png)  [ Python ](https://www.treinaweb.com.br/blog/categoria/python) 

     8 anos atrás

    ##  [ Estilizando formulários automáticos do Django com Bootstrap ](https://www.treinaweb.com.br/blog/estilizando-formularios-automaticos-do-django-com-bootstrap) 

     Veja neste artigo como estilizar, de forma automática, formulários do Django com Bootstrap.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/06/28145950/security-csrf-400x280.jpg)  [ Segurança da Informação ](https://www.treinaweb.com.br/blog/categoria/seguranca-da-informacao) 

     9 anos atrás

    ##  [ Cross-Site Request Forgery (CSRF) e abordagens para mitigá-lo ](https://www.treinaweb.com.br/blog/cross-site-request-forgery-csrf-e-abordagens-para-mitiga-lo) 

     Entenda o que é Cross-Site Request Forgery (CSRF) e conheça abordagens para mitigá-lo, incluindo a mais moderna delas, que é o atributo SameSite para cookies.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/06/14170401/COMANDOS-SYMFONY-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     8 anos atrás

    ##  [ Principais comandos do Symfony CLI ](https://www.treinaweb.com.br/blog/principais-comandos-do-symfony-cli) 

     Nesse artigo falaremos sobre o utilitário de linha de comando symfony. Veremos como realizar a criação de projetos, utilizar o servidor de desenvolvimento, executar comandos da aplicação e outros recursos.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/04/23151422/ARQUITETURA-FLUX-400x280.png)  [ Arquitetura de Software ](https://www.treinaweb.com.br/blog/categoria/arquitetura-de-software) 

     8 anos atrás

    ##  [ Flux - descubra o motivo do sucesso dessa arquitetura em grandes empresas ](https://www.treinaweb.com.br/blog/flux-descubra-o-motivo-do-sucesso-dessa-arquitetura-em-grandes-empresas) 

     Conheça a Arquitetura Flux e entenda o motivo dela estar se tornando cada vez mais requisitada no mercado de trabalho ao se desenvolver sistemas.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/NEST-JS-UPLOAD-ARQUIVOS-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     3 anos atrás

    ##  [ Guia do framework NestJS ](https://www.treinaweb.com.br/blog/guia-do-framework-nestjs) 

     Neste guia do framework NestJS vamos fazer um compilado de tópicos úteis sobre o framework, desde criar um projeto básico até autenticação.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/11/O-QUE-E-HTML-400x280.jpg)  [ Desenvolvimento Front-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-front-end) 

     4 anos atrás

    ##  [ O que é HTML? ](https://www.treinaweb.com.br/blog/o-que-e-html) 

     No artigo de hoje, será abordado o tema HTML, nele irá conter desde sua história, quem o criou e como deve ser montada sua estrutura.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/10/Criando_mascara_monetaria_com_expressoes_regulares-400x280.jpg)  [ Desenvolvimento Front-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-front-end) 

     3 anos atrás

    ##  [ Criando máscara monetária com expressões regulares ](https://www.treinaweb.com.br/blog/criando-mascara-monetaria-com-expressoes-regulares) 

     Nesse artigo aprenderemos a criar uma máscara para inputs que irá deixar seus projetos mais profissionais utilizando as expressões regulares.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/07/O-QUE-É-LANDING-PAGE-400x280.png)  [ Marketing Digital ](https://www.treinaweb.com.br/blog/categoria/marketing-digital) 

     6 anos atrás

    ##  [ O que é Landing Page? ](https://www.treinaweb.com.br/blog/o-que-e-landing-page) 

     Veja neste artigo o que é Landing Page.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/09/TAILWIND-CSS-400x280.jpg)  [ Desenvolvimento Front-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-front-end) 

     4 anos atrás

    ##  [ O que é Tailwind CSS e como instalar via CDN? ](https://www.treinaweb.com.br/blog/o-que-e-tailwind-css-e-como-instalar-via-cdn) 

     Neste artigo aprenderemos a criar um navbar usando Tailwind CSS, e entender melhor como funciona seus componentes de estilização.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/04/15150148/design-thinking-400x280.png)  [ Design ](https://www.treinaweb.com.br/blog/categoria/design) 

     7 anos atrás

    ##  [ O que é Design Thinking? ](https://www.treinaweb.com.br/blog/o-que-e-design-thinking) 

     Confira neste artigo o que vem a ser o Design Thinking e quais são suas etapas.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/GUIA-HTML-400x280.jpg)  [ Desenvolvimento Front-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-front-end) 

     4 anos atrás

    ##  [ Guia da linguagem HTML ](https://www.treinaweb.com.br/blog/guia-da-linguagem-html) 

     Esse guia é perfeito pra você que está começando ou quer entender melhor como podemos trabalhar com a linguagem HTML .

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/09/importancia-dos-testes-de-software-na-qualidade-do-sistema-400x280.png)  [ Arquitetura de Software ](https://www.treinaweb.com.br/blog/categoria/arquitetura-de-software) 

     4 anos atrás

    ##  [ Estrutura de pastas e arquivos com React ](https://www.treinaweb.com.br/blog/estrutura-de-pastas-e-arquivos-com-react) 

     Aprenda a criar uma estrutura de pastas e arquivos com React para ter uma aplicação com fácil manutenção e escalável.

     Ler artigo

## 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  **01h 41min 06s**

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

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
