Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"

Online-Buch aktualisiert

Kapitel "POST-Parameter verfügbar machen" wurde aktualisiert.

Wenn Sie mehr lesen möchten, "mögen" oder "folgen Sie mir" in Buch ;-)


Das Folgende ist ein Auszug aus dem Inhalt des Buches.


Anforderungskörper bearbeiten

Als ich am Ende des vorherigen Kapitels das Ergebnis des Zugriffs auf "/ show_requests" in Chrome betrachtete, stellte ich fest, dass der Anforderungshauptteil leer war.

Selbst wenn der Text nicht leer war, hatte unsere Webanwendung noch nichts unternommen, um den Anforderungstext zu übersetzen oder zu interpretieren. Da es eine große Sache ist, können wir hier den Anfragetext bearbeiten.

Der Anforderungshauptteil wird verwendet, um zusätzliche Informationen (auch als Parameter bezeichnet) vom Client an den Server zu senden, und wird als Beispiel für die Anforderung der POST-Methode (im Folgenden als POST-Anforderung bezeichnet) verwendet.

In diesem Kapitel erfahren Sie, wie Sie mit dem Anforderungshauptteil umgehen, indem Sie die Verarbeitung in Bezug auf die Parameter der POST-Methode implementieren.

Senden Sie eine POST-Anfrage und beobachten Sie den Körper.

Bevor wir es als "Arekore" erklären, wollen wir zunächst beobachten, wie der Anforderungshauptteil tatsächlich verwendet wird.

Senden Sie eine POST-Anfrage

Wenn der Browser eine POST-Anfrage sendet, wird normalerweise die Schaltfläche "Senden" eines Formulars gedrückt, das mit dem Tag "

" erstellt wurde.

Lassen Sie uns tatsächlich HTML erstellen, das das Formular enthält, und experimentieren.

Erstellen Sie den folgenden HTML-Code in study / static.

Der Inhalt ist rudimentäres HTML und muss nicht im Detail erklärt werden. Es gibt verschiedene Arten von Eingabeformularen wie Textfelder, Pulldowns und Auswahlfelder in einem "" - Tag.

study/static/form.html https://github.com/bigen1925/introduction-to-web-application-with-python/blob/main/codes/chapter15/static/form.html

Ab diesem Zeitpunkt werden wir auch den Antwortheader ein wenig ändern. Sie können die Codierung der Zeichenfolge im Header "Content-Type" angeben, und es ist erforderlich, die Codierung für Japanisch anzugeben, um Japanisch im Browser anzuzeigen.

Die Geschichte über die Codierung ist kompliziert. Fügen Sie sie daher hinzu und denken Sie, dass dies auch für diejenigen gilt, die keine PIN haben.

study/workerthread.py https://github.com/bigen1925/introduction-to-web-application-with-python/blob/main/codes/chapter15/workerthread.py#L169

Diese Datei befindet sich im Verzeichnis ** static und unterliegt der Zustellung statischer Dateien **. Greifen Sie daher bei laufendem Server von Chrome aus auf http: // localhsot: 8080 / form.html` zu. Dann können Sie es anzeigen.


Wenn auf das Element "type =" submit "" (im Folgenden als "submit" bezeichnet) geklickt wird, sendet der Browser eine POST-Anforderung an die URL, die durch das Attribut "action" des Tags "" angegeben ist. Machen.

Wenn Sie den Host und den Port für die im Attribut "action" angegebene URL weglassen, werden diese an denselben Host / Port wie die aktuell geöffnete Seite gesendet. Mit anderen Worten, wie diesmal

  • Die aktuell geöffnete Seite lautet "http: // localhost: 8080 / form.html" --<form action = "/ show_requests">

In diesem Fall wird die POST-Anforderung an "http: // localhost: 8080 / show_requests" gesendet.


Geben Sie nun die Werte wie unten gezeigt in das Formular ein und klicken Sie auf die Schaltfläche "Senden".

Wie bereits erläutert, wird die Eingabe in dieses Formular an die POST-Anforderung "/ show_requests" gesendet. Da / show_requests den Inhalt der HTTP-Anfrage im vorherigen Kapitel hätte anzeigen sollen, ist es eine Berechnung, mit der Sie den Inhalt der POST-Anfrage sehen können.

Wenn Sie auf die Schaltfläche "Senden" klicken, sollte auf dem nächsten Bildschirm Folgendes angezeigt werden.

Sie können sehen, dass der Anforderungshauptteil den Wert enthält, im Gegensatz zu dem Fall, in dem Sie einfach "/ show_requests" in die URL-Leiste eingeben, um auf der Seite zu navigieren.

Ebenfalls,

Content-Type: application/x-www-form-urlencoded

Beachten Sie auch, dass der neue Header hinzugefügt wurde. Später werde ich erklären, wie sehr dieser Header Sinn macht.

Beachten Sie den Hauptteil der POST-Anforderung

Nachdem Sie den spezifischen Inhalt des POST-Anforderungshauptteils gesehen haben, können Sie ihn beobachten und untersuchen. Wenn Sie sich den Anforderungshauptteil ansehen, sehen Sie, dass die Werte einzelner Eingabeformulare wie "Textfeld" und "Kennwort" verkettet und in einem festen Format übergeben werden.

Das Format gilt für ein Eingabeformular [Wert des Namensattributs des HTML-Elements] = [In Formular eingegebener Wert] Es gibt ein Paar namens, und die Werte verschiedener Formen sind durch "&" verbunden.

Sie können auch sehen, dass das Leerzeichen mit halber Breite durch das Symbol "+" ersetzt wurde und der "Zeilenvorschubcode" und "Japanisch" in eine mysteriöse Zeichenfolge ** konvertiert wurden, die mit ** "%" beginnt. (Siehe den Wert hidden_value für japanische Eingabewerte)

In einem Eingabeformular, das mehrere Auswahlen wie das Element