Principais atributos e métodos do objeto HttpRequest no Django

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 operacional
  • HTTP_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/'

Tags: Django HttpRequest Web Development Python backend

Publicado em 10-9 04:56