Processando Requisições em Django
O processamento de requisições é o elemento central de qualquer aplicação web. No Django, ele é realizado por meio das views. As views são funções que recebem os dados das requisições, processam essas informações e retornam uma resposta ao cliente.
Uma view no Django recebe um objeto HttpRequest
como parâmetro. Esse objeto, fornecido pelo pacote django.http
, contém todas as informações sobre a requisição do usuário. A view processa esses dados e devolve uma resposta através de um objeto HttpResponse
.
Por padrão, as views são organizadas no arquivo views.py
, localizado dentro da aplicação.
Estrutura Básica de uma View
Considere um projeto Django padrão onde uma aplicação foi criada, conforme descrito no tema anterior:
Inicialmente, o arquivo views.py
terá o seguinte conteúdo:
from django.shortcuts import render
# Create your views here.
Este código inicial ainda não processa requisições. Ele apenas importa a função render
, que será utilizada posteriormente para renderizar templates.
Uma maneira simples de gerar uma resposta é utilizando a classe HttpResponse
, que permite enviar conteúdo textual como resposta. Abaixo está um exemplo modificado do arquivo views.py
:
from django.http import HttpResponse
def index(request):
return HttpResponse("Página Inicial")
def about(request):
return HttpResponse("Sobre o site")
def contact(request):
return HttpResponse("Contato")
No exemplo acima, foram definidas três funções: index
, about
e contact
. Cada função recebe o objeto request
, que contém informações sobre a requisição HTTP. Embora o parâmetro request não seja utilizado diretamente, ele é obrigatório para que a função funcione como uma view
. O conteúdo da resposta é passado diretamente ao construtor de HttpResponse
, como uma string simples.
Configurando as Rotas
Para que as funções definidas no views.py
sejam acessíveis através de URLs, é necessário configurar as rotas no arquivo urls.py
do projeto.
A configuração do arquivo urls.py
é feita da seguinte forma:
from django.urls import path
from hello import views
urlpatterns = [
path('', views.index),
path('about', views.about),
path('contact', views.contact),
]
Aqui, a variável urlpatterns
cria um mapeamento entre as URLs e as funções responsáveis pelo processamento das requisições.
- A URL raiz (
''
) é associada à funçãoindex
. - A URL
/about
é associada à funçãoabout
. - A URL
/contact
é associada à funçãocontact
.
Quando o servidor é iniciado, acessar essas rotas no navegador chamará as funções correspondentes e enviará as respostas definidas no HttpResponse
.
Respostas em HTML
Além de texto simples, as respostas também podem incluir código HTML, que será interpretado e renderizado pelo navegador. A seguir, o arquivo views.py
é modificado para retornar HTML como resposta:
from django.http import HttpResponse
def index(request):
return HttpResponse("<h1>Página Inicial</h1>")
def about(request):
return HttpResponse("<h1>Sobre o site</h1>")
def contact(request):
return HttpResponse("<h1>Contato</h1>")
Neste exemplo, o conteúdo retornado pelas funções é um código HTML simples, que será interpretado pelo navegador e exibido de acordo com as tags HTML utilizadas.
Documentação oficial: