Der Dokumentation zufolge request.METAhandelt es sich um ein "Standard-Python-Wörterbuch, das alle verfügbaren HTTP-Header enthält". Wenn Sie alle Header erhalten möchten, können Sie einfach das Wörterbuch durchlaufen.
Welcher Teil Ihres Codes dies tut, hängt von Ihrer genauen Anforderung ab. Jeder Ort, zu dem Zugang besteht, requestsollte dies tun.
Aktualisieren
Ich muss in einer Middleware-Klasse darauf zugreifen, aber wenn ich darüber iteriere, erhalte ich neben HTTP-Headern viele Werte.
Aus der Dokumentation:
Mit Ausnahme von CONTENT_LENGTHund CONTENT_TYPE, wie oben angegeben, werden alle HTTPÜberschriften in der Anforderung in METASchlüssel konvertiert, indem alle Zeichen in Großbuchstaben konvertiert, Bindestriche durch Unterstriche ersetzt und dem Namen ein HTTP_Präfix hinzugefügt werden .
(Betonung hinzugefügt)
Um die HTTPHeader alleine zu erhalten, filtern Sie einfach nach Schlüsseln, denen ein Präfix vorangestellt ist HTTP_.
Update 2
Können Sie mir zeigen, wie ich ein Wörterbuch mit Headern erstellen kann, indem ich alle Schlüssel aus der request.META-Variablen herausfiltere, die mit einem HTTP_ beginnen und den führenden HTTP_-Teil entfernen.
Sicher. Hier ist eine Möglichkeit, dies zu tun.
import re
regex = re.compile('^HTTP_')
dict((regex.sub('', header), value) for (header, value)
in request.META.items() if header.startswith('HTTP_'))