No framework Django, o objeto request, que é uma instância da classe HttpRequest passada às views, contém diversas propriedades e métodos essenciais para o tratamento de requisições HTTP. Abaixo estão os elementos mais utilizados, com explicações e exemplos práticos.
Atributos
1. scheme
Indica o protocolo utilizado na requisição, geralmente http ou https. Pode ser usado para redirecionamentos condicionais ou validações de segurança.
protocolo = request.scheme # Retorna 'http' ou 'https'
2. body
Contém os dados brutos enviados no corpo da requisição, útil especialmente em requisições com conteúdo JSON ou binário. O valor é retornado como bytes.
dados_brutos = request.body
3. path
Retorna o caminho da URL solicitada, excluindo domínio, porta e parâmetros de consulta. Ideal para roteamento interno ou logs.
caminho = request.path # Ex: '/produtos/listar'
4. method
Informa o verbo HTTP utilizado (como GET, POST, PUT, DELETE). É amplamente usado para definir o fluxo lógico dentro das views.
if request.method == 'POST':
processar_envio()
else:
exibir_formulario()
5. GET
Dicionário semelhante (QueryDict) que armazena parâmetros enviados via query string. Permite acesso seguro aos valores com get().
busca = request.GET.get('q', '')
6. POST
Também um QueryDict, contém dados de formulários HTML submetidos com método POST. Não inclui arquivos — estes ficam em FILES.
nome = request.POST.get('nome')
7. FILES
Armazena arquivos enviados pelo cliente. Cada entrada é um objeto UploadedFile com propriedades como nome, tamanho e conteúdo.
arquivo = request.FILES.get('imagem')
if arquivo:
salvar_arquivo(arquivo.name, arquivo.read())
8. COOKIES
Dicionário com todos os cookies enviados pelo navegador. Útil para leitura de sessões ou preferências armazenadas localmente.
idioma = request.COOKIES.get('preferencia_idioma')
9. META
Dicionário com metadaods da requisição, incluindo cabeçalhos HTTP e variáveis do servidor. Alguns valores comuns:
REMOTE_ADDR: IP do cliente (pode variar com proxies)HTTP_USER_AGENT: Informações sobre navegador e sistema operacionalHTTP_REFERER: Página de origem, se disponível
ip_cliente = request.META.get('REMOTE_ADDR')
agente = request.META.get('HTTP_USER_AGENT')
10. user
Disponível quando o middleware de autenticação está ativo. Representa o usuário logado (User do Django) ou um AnonymousUser.
if request.user.is_authenticated:
boas_vindas = f"Olá, {request.user.first_name}"
Métodos
1. get_full_path()
Retorna o caminho completo da requisição, incluindo a string de consulta (query string).
url_completa = request.get_full_path() # Ex: '/artigos?categoria=python'
2. is_secure()
Verifica se a conexão foi feita via HTTPS. Retorna True se o protocolo for seguro.
if request.is_secure():
habilitar_cookie_seguro = True
3. build_absolute_uri(location=None)
Constrói uma URL asboluta com base na requisição atual. Se nenhum argumento for fornecido, usa o caminho completo.
url_absoluta = request.build_absolute_uri('/perfil/')
# Resulta em algo como: 'https://meusite.com/perfil/'