Inhaltsverzeichnis
Flask -Erweiterungen
Routen.py
, das URLs auf Funktionen ordnet. Lassen Sie es uns nicht mit nicht verwandtem Code überladen. Erstellen Sie stattdessen eine neue Datei namens
, wir werden die Dankesnachricht anzeigen. Andernfalls werden wir das Kontaktformular anzeigen. Erfolg %}
Heim Backend-Entwicklung Python-Tutorial Intro zu Flask: Hinzufügen einer Kontaktseite Hinzufügen

Intro zu Flask: Hinzufügen einer Kontaktseite Hinzufügen

Feb 28, 2025 am 10:03 AM

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 Aktion

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.py

, das URLs auf Funktionen ordnet. Lassen Sie es uns nicht mit nicht verwandtem Code überladen. Erstellen Sie stattdessen eine neue Datei namens

forms.py

und platzieren Sie sie in den Ordner

app/
$ cd flaskapp<br>$ . bin/activate<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
. 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 ContactForm
pip install -U Flask-WTF<br>
Nach dem Login kopieren
Nach dem Login kopieren
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>
Nach dem Login kopieren
Nach dem Login kopieren
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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
, 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 Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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 zu
pip install -U Flask-WTF<br>
Nach dem Login kopieren
Nach dem Login kopieren
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 in
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>
Nach dem Login kopieren
Nach dem Login kopieren
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).

sehen, ob alles funktioniert. Besuchen Sie http: // localhost: 5000/contact, füllen Sie jedes Feld aus und klicken Sie auf "Senden". Wenn alles gut geht, erhalten Sie eine neue E -Mail aus Ihrer Flask -App.

contact.html .

Wir platzieren die wahre

, wir werden die Dankesnachricht anzeigen. Andernfalls werden wir das Kontaktformular anzeigen. Erfolg %}

bedeutet, dass, wenn das Erfolgsflag von

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;

. Ansonsten folgen Sie der Anweisung if ... else
mit & lt; Header & 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.

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1666
14
PHP-Tutorial
1273
29
C#-Tutorial
1253
24
Python: Spiele, GUIs und mehr Python: Spiele, GUIs und mehr Apr 13, 2025 am 12:14 AM

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 vs. C: Lernkurven und Benutzerfreundlichkeit Python vs. C: Lernkurven und Benutzerfreundlichkeit Apr 19, 2025 am 12:20 AM

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.

Python und Zeit: Machen Sie das Beste aus Ihrer Studienzeit Python und Zeit: Machen Sie das Beste aus Ihrer Studienzeit Apr 14, 2025 am 12:02 AM

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 vs. C: Erforschung von Leistung und Effizienz erforschen Python vs. C: Erforschung von Leistung und Effizienz erforschen Apr 18, 2025 am 12:20 AM

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.

Welches ist Teil der Python Standard Library: Listen oder Arrays? Welches ist Teil der Python Standard Library: Listen oder Arrays? Apr 27, 2025 am 12:03 AM

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

Python: Automatisierung, Skript- und Aufgabenverwaltung Python: Automatisierung, Skript- und Aufgabenverwaltung Apr 16, 2025 am 12:14 AM

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.

Python lernen: Ist 2 Stunden tägliches Studium ausreichend? Python lernen: Ist 2 Stunden tägliches Studium ausreichend? Apr 18, 2025 am 12:22 AM

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 vs. C: Verständnis der wichtigsten Unterschiede Python vs. C: Verständnis der wichtigsten Unterschiede Apr 21, 2025 am 12:18 AM

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.

See all articles