Python-POST-Daten mit mod_wsgi
Das muss eine sehr einfache Frage, aber ich bin anscheinend nicht in der Lage sein, um herauszufinden.
Ich bin mit apache + mod_wsgi, meine host-python-Anwendung, und ich möchte, um die post-Inhalte, die in einer der Formen -doch weder der Umwelt, Werte, noch sys.stdin enthält diese Daten. Geist gibt mir eine schnelle hand?
Bearbeiten:
Bereits versucht:
- environ["CONTENT_TYPE"] = "application/x-www-form-urlencoded" (keine Daten)
- environ["wsgi.input"], scheint eine plausible Art und Weise, aber beide environ["wsgi.input"].read () und environ["wsgi.input"].Lesen(-1) gibt eine leere Zeichenfolge zurück (ja, Inhalte und environ["request_method"] = "post"
InformationsquelleAutor der Frage Silver Dragon | 2008-12-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
PEP 333 sagt Sie müssen Lesen environ['wsgi.input'].
Ich gerade gespeichert, die folgenden code gemacht und apache mod_wsgi ausführen. Es funktioniert.
Müssen Sie etwas falsch machen.
InformationsquelleAutor der Antwort nosklo
Bewusst sein, dass technisch gesehen die dem Aufruf von read() oder gelesen(-1) auf wsgi.input ist ein Verstoß gegen die WSGI-Spezifikation, obwohl Apache/mod_wsgi erlaubt. Dies ist, weil die WSGI-Spezifikation erfordert, dass ein gültiges argument Länge geliefert werden. Das WSGI-Spezifikation sagt auch, man sollte nicht mehr Daten als angegeben ist, die durch die CONTENT_LENGTH.
Also, der obige code funktioniert möglicherweise in Apache/mod_wsgi ist es aber nicht tragbar WSGI-code und schlägt fehl auf einigen anderen WSGI-Implementierungen. Um korrekt zu sein, bestimmen request content-length und Versorgung Wert zu Lesen().
InformationsquelleAutor der Antwort Graham Dumpleton