O Django é um framework de desenvolvimento web de alto nível escrito em Python que promove o desenvolvimento rápido, o design limpo e a abordagem pragmática. Um dos aspectos mais importantes do desenvolvimento web é a manipulação de formulários. Nesse contexto, vamos nos concentrar na seção 19.4: Formulários em Django.
Os formulários são uma parte essencial de qualquer aplicativo web. Eles são a interface principal para a entrada do usuário, permitindo que os usuários insiram dados que o aplicativo pode então usar para realizar uma variedade de tarefas. No Django, os formulários são tratados por uma biblioteca de formulários integrada.
Criação de um aplicativo Django
Para começar, precisamos criar um novo aplicativo Django. Suponha que o nome do nosso aplicativo seja 'myapp'. Para criar este aplicativo, usamos o comando:
python manage.py startapp myapp
Em seguida, precisamos adicionar 'myapp' à lista de INSTALLED_APPS em nosso arquivo settings.py para que o Django saiba que ele existe.
Formulários em Django
O Django fornece várias maneiras de criar formulários. A maneira mais comum é usar a classe Form. Uma classe Form é simplesmente uma maneira de definir campos de formulário. Cada campo de formulário tem um tipo de campo específico - CharField para campos de entrada de texto, DateTimeField para entradas de data e hora, etc.
Por exemplo, podemos criar um formulário simples para um sistema de comentários da seguinte maneira:
from django import forms
class CommentForm(forms.Form):
name = forms.CharField(max_length=100)
comment = forms.CharField(widget=forms.Textarea)
Este é um formulário muito básico com dois campos - um campo de entrada de texto para o nome e uma área de texto para o comentário. O Django automaticamente lida com a renderização desses campos como HTML, a validação da entrada do usuário e a conversão da entrada do usuário em tipos de dados Python.
Usando Formulários em Views
Depois de definir um formulário, podemos usá-lo em uma view. Uma view é simplesmente uma função Python que recebe uma solicitação da web e retorna uma resposta. No Django, podemos usar a função render() para renderizar um template HTML com um contexto dado. O contexto é um dicionário que mapeia nomes de variáveis para valores de Python.
Por exemplo, aqui está uma view que renderiza nosso formulário CommentForm:
from django.shortcuts import render
from .forms import CommentForm
def comment(request):
form = CommentForm()
return render(request, 'comment.html', {'form': form})
Esta view simplesmente cria uma nova instância do nosso CommentForm e a passa para o template 'comment.html' sob o nome 'form'.
Manipulação de Submissões de Formulários
Quando um usuário envia um formulário, precisamos processar os dados do formulário. O Django facilita isso com o método is_valid(). Este método verifica se os dados do formulário são válidos - se todos os campos foram preenchidos corretamente e se os dados passam por todas as validações definidas.
Se o formulário for válido, podemos acessar os dados do formulário limpos através do atributo cleaned_data, que é um dicionário que mapeia nomes de campos para valores de campos limpos.
Por exemplo, aqui está uma view que processa a submissão do nosso CommentForm:
from django.shortcuts import render, redirect
from .forms import CommentForm
def comment(request):
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
# process the data in form.cleaned_data
# ...
return redirect('success')
else:
form = CommentForm()
return render(request, 'comment.html', {'form': form})
Esta view primeiro verifica se a solicitação é um POST. Se for, ele cria uma nova instância do CommentForm a partir dos dados POST, verifica se o formulário é válido e, em seguida, processa os dados. Se a solicitação não for um POST, a view simplesmente renderiza o formulário como antes.
Conclusão
Os formulários são uma parte essencial do desenvolvimento web e o Django fornece uma maneira poderosa e flexível de trabalhar com eles. Com a biblioteca de formulários do Django, podemos definir formulários de maneira declarativa, processar submissões de formulários com facilidade e reutilizar formulários comuns em todo o nosso aplicativo.