Der Dokumentation zufolge request.META
handelt 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, request
sollte 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_LENGTH
und CONTENT_TYPE
, wie oben angegeben, werden alle HTTP
Überschriften in der Anforderung in META
Schlü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 HTTP
Header 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_'))