Atualizado: 14/12/2024

Obtendo dados do objeto HttpRequest - Django

No Django, as funções de visualização recebem como parâmetro obrigatório o objeto HttpRequest, responsável por armazenar todas as informações relacionadas a uma requisição HTTP. Esse objeto fornece diversos atributos e métodos que permitem acessar detalhes específicos da requisição.

Principais atributos do HttpRequest:

  • scheme: Define o esquema da requisição, como http ou https.

  • body: Armazena o corpo da requisição em formato de bytes.

  • path: Indica o caminho solicitado pelo cliente.

  • method: Representa o método HTTP utilizado, como GET, POST, PUT etc.

  • encoding: Define a codificação usada para os dados da requisição.

  • content_type: Refere-se ao tipo de conteúdo enviado, conforme especificado no cabeçalho CONTENT_TYPE.

  • GET: Dicionário contendo os parâmetros da requisição GET.

  • POST: Dicionário contendo os parâmetros da requisição POST.

  • COOKIES: Dicionário com os cookies enviados pelo cliente.

  • FILES: Contém os arquivos enviados pelo cliente.

  • headers: Fornece os cabeçalhos da requisição em formato de dicionário.

  • META: Dicionário que armazena todos os cabeçalhos HTTP disponíveis na requisição. A lista de cabeçalhos pode variar de acordo com o cliente e o servidor. Alguns exemplos importantes incluem:

    • CONTENT_LENGTH: Comprimento do conteúdo da requisição.

    • CONTENT_TYPE: Tipo MIME do conteúdo da requisição.

    • HTTP_ACCEPT: Tipos de resposta aceitos pelo cliente.

    • HTTP_ACCEPT_ENCODING: Codificações aceitas pelo cliente na resposta.

    • HTTP_ACCEPT_LANGUAGE: Idioma aceito na resposta.

    • HTTP_HOST: Host do servidor acessado.

    • HTTP_REFERER: URL da página que originou a requisição (se disponível).

    • HTTP_USER_AGENT: Identificação do navegador ou cliente que realizou a requisição.

    • QUERY_STRING: String de consulta enviada na URL.

    • REMOTE_ADDR: Endereço IP do cliente.

    • REMOTE_HOST: Nome do host do cliente.

    • REMOTE_USER: Dados de autenticação do cliente (se disponíveis).

    • REQUEST_METHOD: Método utilizado na requisição, como GET ou POST.

    • SERVER_NAME: Nome do servidor.

    • SERVER_PORT: Porta utilizada pelo servidor.

Métodos úteis do HttpRequest:

  • get_full_path: Retorna o caminho completo da requisição, incluindo a string de consulta (query string).

  • get_host: Retorna o host da requisição, levando em conta os cabeçalhos HTTP_X_FORWARDED_HOST (caso USE_X_FORWARDED_HOST esteja habilitado) e HTTP_HOST.

  • get_port: Retorna o número da porta utilizada na requisição.

A seguir, um exemplo de função de visualização que utiliza o objeto HttpRequest para obter informações sobre a requisição no arquivo views.py:

from django.http import HttpResponse

def index(request):
    host = request.META["HTTP_HOST"]  # Obtém o endereço do servidor
    user_agent = request.META["HTTP_USER_AGENT"]  # Obtém informações sobre o navegador do cliente
    path = request.path  # Obtém o caminho solicitado pelo cliente
    
    return HttpResponse(f"""
        <p>Host: {host}</p>
        <p>Path: {path}</p>
        <p>User-agent: {user_agent}</p>
    """)

Neste caso, são acessados os valores dos cabeçalhos HTTP_HOST e HTTP_USER_AGENT, além do caminho da requisição através do atributo path.

Para disponibilizar a função index como uma rota, é necessário registrá-la no arquivo urls.py:

from django.urls import path
from hello import views

urlpatterns = [
    path("index", views.index),
]

Ao acessar a URL /index, o servidor responde com as informações capturadas da requisição. Por exemplo:

Host: 127.0.0.1:8000

Path: /index

User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com