Obtendo dados do objeto HttpRequest - Django
No Django, as funções de visualização recebem como parâmetro obrigatório o objeto HttpRequest
Principais atributos do HttpRequest
: Define o esquema da requisição, comoscheme
ouhttp
.https
: Armazena o corpo da requisição em formato de bytes.body
: Indica o caminho solicitado pelo cliente.path
: Representa o método HTTP utilizado, como GET, POST, PUT etc.method
: Define a codificação usada para os dados da requisição.encoding
: Refere-se ao tipo de conteúdo enviado, conforme especificado no cabeçalhocontent_type
.CONTENT_TYPE
: Dicionário contendo os parâmetros da requisição GET.GET
: Dicionário contendo os parâmetros da requisição POST.POST
: Dicionário com os cookies enviados pelo cliente.COOKIES
: Contém os arquivos enviados pelo cliente.FILES
: Fornece os cabeçalhos da requisição em formato de dicionário.headers
: 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:META
: Comprimento do conteúdo da requisição.CONTENT_LENGTH
: Tipo MIME do conteúdo da requisição.CONTENT_TYPE
: Tipos de resposta aceitos pelo cliente.HTTP_ACCEPT
: Codificações aceitas pelo cliente na resposta.HTTP_ACCEPT_ENCODING
: Idioma aceito na resposta.HTTP_ACCEPT_LANGUAGE
: Host do servidor acessado.HTTP_HOST
: URL da página que originou a requisição (se disponível).HTTP_REFERER
: Identificação do navegador ou cliente que realizou a requisição.HTTP_USER_AGENT
: String de consulta enviada na URL.QUERY_STRING
: Endereço IP do cliente.REMOTE_ADDR
: Nome do host do cliente.REMOTE_HOST
: Dados de autenticação do cliente (se disponíveis).REMOTE_USER
: Método utilizado na requisição, como GET ou POST.REQUEST_METHOD
: Nome do servidor.SERVER_NAME
: Porta utilizada pelo servidor.SERVER_PORT
Métodos úteis do HttpRequest
: Retorna o caminho completo da requisição, incluindo a string de consulta (query string).get_full_path
: Retorna o host da requisição, levando em conta os cabeçalhosget_host
(casoHTTP_X_FORWARDED_HOST
esteja habilitado) eUSE_X_FORWARDED_HOST
.HTTP_HOST
: Retorna o número da porta utilizada na requisição.get_port
A seguir, um exemplo de função de visualização que utiliza o objeto HttpRequest
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
HTTP_USER_AGENT
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
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