Belgelere göre, request.META
"mevcut tüm HTTP başlıklarını içeren standart bir Python sözlüğü" dür. Tüm başlıkları almak istiyorsanız , sözlükte yinelemeniz yeterlidir.
Bunu yapmak için kodunuzun hangi bölümü tam gereksiniminize bağlıdır. Erişimi olan herhangi bir yerin yapması request
gerekir.
Güncelleme
Bir Middleware sınıfında ona erişmem gerekiyor, ancak üzerinde yinelediğimde, HTTP başlıkları dışında birçok değer alıyorum.
Belgelerden:
Yukarıda verilen CONTENT_LENGTH
ve hariç olmak üzere CONTENT_TYPE
, HTTP
istekteki tüm başlıklar, META
tüm karakterleri büyük harfe dönüştürerek, herhangi bir kısa çizgiyi altçizgilerle değiştirerek ve ada bir HTTP_
önek ekleyerek anahtarlara dönüştürülür .
(Vurgu eklenmiştir)
HTTP
Başlıkları tek başına almak için ön ekli anahtarlara göre filtreleyin HTTP_
.
Güncelleme 2
Bir HTTP_ ile başlayan ve baştaki HTTP_ bölümünü çıkaran istek.META değişkenindeki tüm anahtarları filtreleyerek nasıl bir başlık sözlüğü oluşturabileceğimi bana gösterebilir misiniz?
Elbette. İşte bunu yapmanın bir yolu.
import re
regex = re.compile('^HTTP_')
dict((regex.sub('', header), value) for (header, value)
in request.META.items() if header.startswith('HTTP_'))