Heim >Backend-Entwicklung >Python-Tutorial >Intro zu Flask: Hinzufügen einer Kontaktseite Hinzufügen
In dem vorherigen Artikel in dieser Mini-Serie haben wir einen Flask verwendet, um eine einfache Website zu erstellen, die "Home" und "über" Seiten mit einem verallgemeinerten Workflow enthält, den wir für andere in Flaskbasis basierende Web-Apps bewerben können. In dieser Lektion werde ich zeigen, wie Sie eine Kontaktseite hinzufügen, auf der Benutzer Ihnen Nachrichten senden können.
Der in diesem Artikel verwendete Code finden Sie in GitHub.
Flask wird nicht mit vielen Funktionen aus dem Regal geliefert, was es einfach macht, abzuholen und zu lernen. Es gibt keinen Objekt-Relations-Mapper für die Datenbankinteraktion oder die Admin-Schnittstellen zum Hinzufügen und Aktualisieren von Inhalten. Es bietet nur eine kleine Reihe von Funktionen, von denen wir bereits verwendet haben - render_template () . Eine Flask -Erweiterung ist ein Paket, das Ihrer App spezifische Funktionen hinzufügt. Zum Beispiel fügt Flask-SQLalchemy Ihrer App Datenbankunterstützung hinzu, während Flask-Login Anmeldung/Abmeldeunterstützung hinzufügt. Sie finden eine vollständige Liste von Erweiterungen in der Registrierung von Flask-Erweiterung. Was bedeutet das? Schauen Sie sich das folgende Diagramm an:
Ein Benutzer gibt eine GET -Anforderung für eine Webseite aus, die ein Formular enthält.
zu einem Python -Skript schreiben. Das Python -Skript spiegelt das Formular wider, um jedes Formularfeld zu erfassen und die Formularfelddaten zu validieren. Wenn wir diese Strategie jedoch anwenden, würden wir das Formular im Wesentlichen zweimal definieren-gleichzeitig für das Front-End und einmal für das Back-End.
Es wäre großartig, die Form nur einmal zu definieren: im Python -Skript. Genau das ermöglicht uns Flask-WTF. Wir werden das Formular nur einmal in einem Python-Skript definieren, und dann lassen wir Flask-wtf das HTML des Formulars für uns generieren. Der Sinn von all dem besteht darin, die Darstellung von Inhalten zu trennen.
Genug Chatter. Lassen Sie uns einen Formular codieren. Wir haben bereits
Routen.pyund platzieren Sie sie in den Ordner
app/$ cd flaskapp<br>$ . bin/activate<br>. Was haben wir gemacht? Zunächst haben wir einige nützliche Klassen aus dem Flask-wtf contactForm
importiert und aus dem & lt; Eingabe type = "text" & gt; name & lt;/input & gt;
In einer HTML-Datei schreiben, schreiben Sie am Anfang deses aus Formularen ContactFormpip install -U Flask-WTF<br>Skript.
app/Routes.py Konfigurieren Sie als Nächstes, um einen Sicherheitsnutzung zu verarbeiten, der als CSRF (Cross-Site-Anforderungswesen) bezeichnet wird. In einer perfekten Welt verarbeitet Ihr Server nur Formulare, die zu Ihrer Web -App gehören. Mit anderen Worten, Ihr Server würde die von Ihnen erstellten Formulare nur behandeln und validieren. Ein Angreifer ist jedoch möglich, ein Formular auf einer eigenen Website zu erstellen, es mit böswilligen Informationen auszufüllen und an Ihren Server zu senden. Wenn Ihr Server diese böswilligen Informationen akzeptiert, können alle möglichen schlechten Dinge als nächstes passieren. Eine Möglichkeit, dies zu tun, besteht darin, eine eindeutige Token in Ihrem HTML /Contact
zu versteckt. Die Funktion contact ()erstellen wir zunächst eine neue Instanz unseres Kontaktformulars in Zeile drei und senden sie an eine Webvorlage mit dem Namen contact.html in Zeile vier. Wir werden diese Webvorlage in Kürze erstellen.
from flask_wtf import FlaskForm<br>from wtforms import StringField, TextAreaField, SubmitField<br><br><br><br>class ContactForm(FlaskForm):<br> name = StringField("Name")<br> email = StringField("Email")<br> subject = StringField("Subject")<br> message = TextAreaField("Message")<br> submit = SubmitField("Send") <br>Wir haben jedoch noch einige Arbeiten hier. Das obige Diagramm zeigte, dass die Webseite mit dem Formular abgerufen und im Browser geladen werden sollte, wenn eine GET -Anforderung an den Server gesendet wird. Wenn der Server eine Postanforderung erhält, sollte eine Funktion die Formularfelddaten erfassen und prüfen, ob sie gültig sind. In Python -Begriffen kann diese Logik in einem if ... sonst
Logik in die render_template () im vorherigen Artikel ausgedrückt werden. Hier importieren wir hier eine weitere Flask -Klasse mit dem Namen Anfrage , ob die aktuelle HTTP -Methode ein GET oder ein Post ist. Als nächstes kommt die Funktion contact () (Zeilen 9-13).
Diese Zeichenfolge ist ein temporärer Platzhalter, und wir werden ihn im letzten Schritt dieses Artikels durch echten Code ersetzen. Andernfalls geben wir die Webvorlage contact.html zurück, die das Formular enthält.
Der nächste Schritt besteht Ordner. sein eigener Text. Wir geben zunächst an, wo die Formulardaten zur Einreichung gesendet werden sollen, indem die Aktion Attribut an /Kontakt auf die Funktion contact () abgebildet wird, wobei eine Variable namens ContactForm an die Webvorlage gesendet wird
contact.html. Html. Taste. Die Postanforderungshits
Routes.py$ cd flaskapp<br>$ . bin/activate<br>, wobei der URL -Ansatz ()
. Aber was passiert, wenn der Benutzer das Formular nicht richtig ausfüllt? Wir müssen die Benutzereingabe validieren, damit sie in späteren Schritten keine Probleme verursachen. Glücklicherweise wird Flask-WTF mit vielen nützlichen, eingebauten Validatoren ausgestattet, die wir sofort verwenden können. Wir werden diese Validatoren in den integrierten Validator von Datarequired von [validators = datarequired ()] in jedes Formularfeld einfügen, um das Vorhandensein zu validieren. Beachten Sie, dass sich dieser Validator in einer Python -Liste befindet, was bedeutet, dass wir dieser Liste problemlos mehr Validatoren hinzufügen können. Folgt: Dies für unsere Formularvalidierung. Diese Fehlermeldung darf nur angezeigt werden, wenn die Validierung fehlschlägt und verschwindet, wenn der Fehler behoben wurde. Flask macht dies wirklich einfach, indem er die Funktion von Flash () am Anfang des Skripts verwendet. App/Routes
$ cd flaskapp<br>$ . bin/activate<br>
Nach dem Kontaktformular zum Server sollte jeder Validierungsfehler das Formular mit einer hilfreichen Fehlermeldung neu laden. Andernfalls können die Eingabedaten für die zukünftige Verarbeitung verwendet werden. Noch einmal kann diese Logik in einem if ... else logik zum if request.method == 'post': block ausgedrückt werden. Das Fehlermeldungsformular wurde
veröffentlicht, das angibt, dass das Formular erfolgreich eingereicht wurde. Siehe den folgenden Block:Die Funktion für
Schleife. Fügen Sie diesen Codeblock zupip install -U Flask-WTF<br>contact.html
nach & lt; Form & gt; Tag hinzu. Prettus. Hinterlassen Sie alle Felder leer und klicken Sie auf senden
, um zu testen, ob die Form der Formularvalidierung und Fehlermeldung das Blinken funktioniert.Dies ist süß! Wir haben eine Fehlermeldung erfolgreich an unser Kontaktformular gesendet, wenn eine Validierungsprüfung fehlschlägt. Wir können tatsächlich ein bisschen besser machen. Anstatt eine generische Fehlermeldung für alle fehlgeschlagenen Validierungsprüfungen zu haben, ist es besser, eine bestimmte Fehlermeldung für jede fehlgeschlagene Validierungsprüfung zu erhalten. Wenn der Benutzer beispielsweise vergisst, das Fachfeld auszufüllen, geben Sie eine bestimmte Fehlermeldung mit, die besagt, dass Sie Ihren Namen
eingeben. Wir können dies ziemlich einfach erreichen. Beginnen wir damit, unsere spezifischen Fehlermeldungen in jedem Validator infrom flask_wtf import FlaskForm<br>from wtforms import StringField, TextAreaField, SubmitField<br><br><br><br>class ContactForm(FlaskForm):<br> name = StringField("Name")<br> email = StringField("Email")<br> subject = StringField("Subject")<br> message = TextAreaField("Message")<br> submit = SubmitField("Send") <br>forms.py
zu schreiben. Lassen Sie uns als nächstes contact.html ändern, um diese spezifischen Fehlermeldungen zu empfangen und anzuzeigen. Früher haben wir uns auf das Funktionsfehler für jedes Formularfeld angewiesen, um die spezifischen Fehlermeldungen mithilfe der Jinja2 -Meldung und der Nachricht
über sie zu schleifen, um eine neue E -Mail zu komponieren, und die mail Variable enthält eine verwendbare Instanz der App. 17). Sie haben wahrscheinlich Gruppen gesehen, wie sie Kontakt -E -Mail -Adressen wie support@example.com verwenden. Wenn Sie Ihre eigene Domain besitzen und eine neue Kontakt -E -Mail -Adresse erstellen können, geben Sie diese E -Mail -Adresse an, wenn request.method == 'Beitrag': Block erneut. Wir haben bereits Logik im Formular hinzugefügt. Lassen Sie uns daher in der Meldung eine Subjektzeile, eine "From" -Ade und eine "bis" -Anadresse eine Logik hinzufügen. Anschließend sammeln wir die Felddaten des Kontaktformulars mit app.config ["mail_username"] , also haben wir hier für die From -Adresse verwendet. Die E-Mail wird an Ihre persönliche E-Mail-Adresse gesendet, damit Sie neue Nachrichten empfangen und antworten können. Wir fügen den Namen, die E -Mail und die Nachricht des Benutzers hinzu. Ich verwende Pythons String -Formatierungsbetreiber Mail.send (msg) , um die E -Mail zu senden (Zeile 15). contact.html . Routes.py auf & lt; p & gt; danke für Ihre Nachricht gesendet wird. Wir werden uns in Kürze bei Ihnen melden. & Lt;/p & gt; Element. Tun wir dies auch für die Kontaktseite (Zeile acht). Wir haben unserer Flask -App eine Kontaktseite mit einem Formular hinzugefügt. Formulare erscheinen an mehreren Stellen in Webanwendungen, insbesondere während der Anmeldung und Anmeldung. Dieser Workflow kann angepasst werden, um diese Bedürfnisse zu erfüllen. Beim Erstellen einer Kontaktseite haben wir gelernt, wie man Kolbenverlängerungen verwendet. Schauen Sie sich die Registrierung zur Erweiterung der Flasche an, um viele weitere Erweiterungen zu untersuchen, die Sie in Ihre App integrieren können. , wir werden die Dankesnachricht anzeigen. Andernfalls werden wir das Kontaktformular anzeigen. Erfolg %}
bedeutet, dass, wenn das Erfolgsflag von mit & lt; Header & gt;
Das obige ist der detaillierte Inhalt vonIntro zu Flask: Hinzufügen einer Kontaktseite Hinzufügen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!