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 -Erweiterungen
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.
Der Benutzer füllt das Formular aus. Felder validieren nicht, die Webseite, die das Formular enthält, lädt erneut mit einer hilfreichen Fehlermeldung und fordert den Benutzer erneut aus. In Flask veröffentlichen wir das Formular für eine Funktion in
Routen.py
. Diese Funktion wird als Form -Handler bezeichnet. Wir werden ein paar Validierungsüberprüfungen ausführen. Wenn eine der Eingaben nicht übertroffen wird, aktualisieren wir die Seite, um eine Nachricht anzuzeigen, die den Fehler beschreibt. Sobald alle Validierungsüberprüfungen bestanden haben, verwenden wir die Formulardaten für den nächsten Schritt: E -Mail an Sie, den Website -Eigentümer an Sie. Wo definieren wir jetzt die Form? Wir könnten HTML mit dem Aktionzu 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.py, das URLs auf Funktionen ordnet. Lassen Sie es uns nicht mit nicht verwandtem Code überladen. Erstellen Sie stattdessen eine neue Datei namens
forms.pyund platzieren Sie sie in den Ordner
app/$ cd flaskapp<br>$ . bin/activate<br>
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>
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>
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>
. 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>
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>
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Python zeichnet sich in Gaming und GUI -Entwicklung aus. 1) Spielentwicklung verwendet Pygame, die Zeichnungen, Audio- und andere Funktionen bereitstellt, die für die Erstellung von 2D -Spielen geeignet sind. 2) Die GUI -Entwicklung kann Tkinter oder Pyqt auswählen. Tkinter ist einfach und einfach zu bedienen. PYQT hat reichhaltige Funktionen und ist für die berufliche Entwicklung geeignet.

Python ist leichter zu lernen und zu verwenden, während C leistungsfähiger, aber komplexer ist. 1. Python -Syntax ist prägnant und für Anfänger geeignet. Durch die dynamische Tippen und die automatische Speicherverwaltung können Sie die Verwendung einfach zu verwenden, kann jedoch zur Laufzeitfehler führen. 2.C bietet Steuerung und erweiterte Funktionen auf niedrigem Niveau, geeignet für Hochleistungsanwendungen, hat jedoch einen hohen Lernschwellenwert und erfordert manuellem Speicher und Typensicherheitsmanagement.

Um die Effizienz des Lernens von Python in einer begrenzten Zeit zu maximieren, können Sie Pythons DateTime-, Zeit- und Zeitplanmodule verwenden. 1. Das DateTime -Modul wird verwendet, um die Lernzeit aufzuzeichnen und zu planen. 2. Das Zeitmodul hilft, die Studie zu setzen und Zeit zu ruhen. 3. Das Zeitplanmodul arrangiert automatisch wöchentliche Lernaufgaben.

Python ist in der Entwicklungseffizienz besser als C, aber C ist in der Ausführungsleistung höher. 1. Pythons prägnante Syntax und reiche Bibliotheken verbessern die Entwicklungseffizienz. 2. Die Kompilierungsmerkmale von Compilation und die Hardwarekontrolle verbessern die Ausführungsleistung. Bei einer Auswahl müssen Sie die Entwicklungsgeschwindigkeit und die Ausführungseffizienz basierend auf den Projektanforderungen abwägen.

PythonlistsarePartThestandardlibrary, whilearraysarenot.listarebuilt-in, vielseitig und UNDUSEDFORSPORINGECollections, während dieArrayRay-thearrayModulei und loses und loses und losesaluseduetolimitedFunctionality.

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

Ist es genug, um Python für zwei Stunden am Tag zu lernen? Es hängt von Ihren Zielen und Lernmethoden ab. 1) Entwickeln Sie einen klaren Lernplan, 2) Wählen Sie geeignete Lernressourcen und -methoden aus, 3) praktizieren und prüfen und konsolidieren Sie praktische Praxis und Überprüfung und konsolidieren Sie und Sie können die Grundkenntnisse und die erweiterten Funktionen von Python während dieser Zeit nach und nach beherrschen.

Python und C haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1) Python ist aufgrund seiner prägnanten Syntax und der dynamischen Typisierung für die schnelle Entwicklung und Datenverarbeitung geeignet. 2) C ist aufgrund seiner statischen Tipp- und manuellen Speicherverwaltung für hohe Leistung und Systemprogrammierung geeignet.
