De acordo com a documentação, request.META
é um "dicionário Python padrão contendo todos os cabeçalhos HTTP disponíveis". Se você deseja obter todos os cabeçalhos, pode simplesmente iterar no dicionário.
Qual parte do seu código deve ser feita depende de sua necessidade exata. Qualquer lugar que tenha acesso request
deve servir.
Atualizar
Eu preciso acessá-lo em uma classe de Middleware, mas quando eu itero sobre ele, obtenho muitos valores além dos cabeçalhos HTTP.
Da documentação:
Com exceção de CONTENT_LENGTH
e CONTENT_TYPE
, conforme fornecido acima, todos os HTTP
cabeçalhos na solicitação são convertidos em META
chaves, convertendo todos os caracteres em maiúsculas, substituindo todos os hifens por sublinhados e adicionando um HTTP_
prefixo ao nome .
(Enfase adicionada)
Para obter apenas os HTTP
cabeçalhos, basta filtrar por chaves com o prefixo HTTP_
.
Atualização 2
você poderia me mostrar como eu poderia construir um dicionário de cabeçalhos filtrando todas as chaves da variável request.META que começam com um HTTP_ e eliminam a parte principal do HTTP_.
Certo. Aqui está uma maneira de fazer isso.
import re
regex = re.compile('^HTTP_')
dict((regex.sub('', header), value) for (header, value)
in request.META.items() if header.startswith('HTTP_'))