Django é freqüentemente chamado de “Batteries included Framework” porque tem uma configuração padrão para tudo e tem recursos que podem ajudar qualquer pessoa a desenvolver um site rapidamente. Falando sobre formulários, em HTML, um formulário é uma coleção de elementos dentro de <form>… </form> que permite a um visitante fazer coisas como inserir texto, selecionar opções, manipular objetos ou controles e assim por diante, e então enviar isso informações de volta ao servidor. Basicamente, é a coleta de dados para processamento para qualquer finalidade, incluindo salvá-los no banco de dados ou buscar dados do banco de dados. Django suporta todos os tipos de formulários HTML e renderiza dados deles para uma visão para processamento usando várias operações lógicas.

Para saber mais sobre formulários HTML, visite HTML | formulário Tag .

Django também fornece um recurso integrado de Django Forms, assim como Django Models . Pode-se criar formulários no Django e usá-los para buscar dados do usuário de uma maneira conveniente.
Para começar com os formulários, é necessário estar familiarizado com as solicitações GET e POST nos formulários.

  • GET : GET, por outro lado, agrupa os dados enviados em uma string e usa isso para compor uma URL. O URL contém o endereço para onde os dados devem ser enviados, bem como as chaves e valores dos dados. Você pode ver isso em ação se fizer uma pesquisa na documentação do Django, que produzirá uma URL no formato https://docs.djangoproject.com/search/?q=forms&release=1 .
  • POST : qualquer solicitação que possa ser usada para alterar o estado do sistema - por exemplo, uma solicitação que faça alterações no banco de dados - deve usar POST.

Renderizar formulários HTML na explicação do Django

Ilustração de Django Forms usando um exemplo. Considere um projeto chamado geeksforgeeks com um aplicativo chamado geeks.

Consulte os artigos a seguir para verificar como criar um projeto e um aplicativo no Django.



Vamos criar um formulário HTML simples para mostrar como você pode inserir os dados de um usuário e usá-los em sua visualização. Insira o seguinte código em geeks> templates> home.html

<form action = "" method = "get"> 
    <label for="your_name">Your name: </label> 
    <input id="your_name" type="text" name="your_name"> 
    <input type="submit" value="OK"> 
</form> 

Agora, para renderizá-lo em nossa visualização, precisamos modificar urls.py para o aplicativo geeks. 
Insira o código a seguir em geeksforgeeks> urls.py

from django.urls import path 
from .views import geeks_view 
  
urlpatterns = [ 
    path('', home_view ), 
] 

Agora vamos para nossa home_view e começar a verificar como vamos obter os dados. Dados inteiros de um formulário HTML no Django são transferidos como um objeto JSON chamado de solicitação. Vamos criar uma visão primeiro e depois tentaremos todos os métodos para buscar dados do formulário.

from django.shortcuts import render 
def home_view(request): 
  
    
    return render(request, "home.html") 

Como temos tudo configurado, vamos executar o servidor Python manage.py run e verificar se o formulário está lá na página inicial.

django-forms-python

Por padrão, todo formulário já escrito em HTML faz uma solicitação GET para o back end de um aplicativo, uma solicitação GET normalmente funciona usando consultas na URL. Vamos demonstrar usando o formulário acima, Preencha o formulário com seu nome e vamos ver o que acontece.

python-django-forms

O URL acima é anexado com o atributo name da tag de entrada e o nome inserido no formulário. É assim que a solicitação GET funciona, qualquer que seja o número de entradas que seriam anexadas à URL para enviar os dados ao back-end de um aplicativo. Vamos verificar como finalmente obter esses dados em nossa visualização para que a lógica possa ser aplicada com base na entrada. 
Em views.py



from django.shortcuts import render 
def home_view(request): 
    print(request.GET) 
    return render(request, "home.html") 

Agora, quando preenchemos o formulário, podemos ver a saída no terminal como abaixo

python-django-forms-get-request

request.GET retorna um dicionário de consulta que pode ser acessado como qualquer outro dicionário Python e finalmente usar seus dados para aplicar alguma lógica. 
Da mesma forma, se o método de transmissão for POST, você pode usar request.POST como dicionário de consulta para renderizar os dados do formulário em visualizações.
Em home.html

<form action = "" method = "POST"> 
    {% csrf_token %}  
    <label for="your_name">Your name: </label> 
    <input id="your_name" type="text" name="your_name"> 
    <input type="submit" value="OK"> 
</form> 

Observe que sempre que criamos uma solicitação de formulário, Django requer que você adicione {% csrf_token%} no formulário para fins de segurança. 
Agora, em views.py vamos verificar o que a solicitação.POST tem.

from django.shortcuts import render 
def home_view(request): 
    print(request.POST) 
    return render(request, "home.html") 

Agora, quando enviamos o formulário, ele mostra os dados abaixo.

python-django-forms-render-post-request

Desta forma, pode-se usar esses dados para consultar o banco de dados ou para processar usando alguma operação lógica e passar o uso do dicionário de contexto para o modelo.