Erste Schritte mit Flask, einem Python-Mikroframework – SitePoint

Nachricht

HeimHeim / Nachricht / Erste Schritte mit Flask, einem Python-Mikroframework – SitePoint

Jan 28, 2024

Erste Schritte mit Flask, einem Python-Mikroframework – SitePoint

In diesem Artikel stellen wir Flask vor, ein beliebtes Mikroframework für Python

In diesem Artikel stellen wir Flask vor, ein beliebtes Mikroframework für Python, das eine Alternative zum Riesen Django bietet.

Flask ist leichtgewichtig und flexibel konzipiert, sodass Entwickler schnell und einfach Webanwendungen erstellen können. In diesem Artikel besprechen wir, was Flask ist, welche Hauptfunktionen es bietet, welche Vorteile seine einfache API bietet, welche Flexibilität es bei der Unterstützung von Erweiterungen von Drittanbietern bietet, welche gängigsten Flask-Erweiterungen es gibt und wann ein guter Zeitpunkt für die Verwendung ist und wann nicht Flasche.

Flask ist ein in Python geschriebenes Micro-Web-Framework, das zur Entwicklung von Webanwendungen verwendet wird. Es basiert auf der einfachen Philosophie, die Dinge einfach und leicht zu halten und Entwicklern nur die wichtigsten Tools zur Verfügung zu stellen, die sie zum Erstellen von Webanwendungen ohne unnötige Komplexität benötigen.

Es basiert auf dem Werkzeug WSGI-Toolkit, das die für die Verarbeitung von Anfragen und Antworten erforderlichen Webserverfunktionen bereitstellt, und der Jinja2-Templating-Engine, die Flask die Möglichkeit gibt, HTML-Vorlagen zu verarbeiten, sodass Entwickler dynamische Webanwendungen erstellen können.

Hier sind einige der wichtigsten Funktionen von Flask, die es zu einem großartigen Framework für die Arbeit machen:

Insgesamt bietet Flask ein leistungsstarkes, flexibles und dennoch einfaches Framework zum Erstellen von Webanwendungen. Es ist eine gute Wahl sowohl für neue als auch für erfahrene Webentwickler und eines der beliebtesten Web-Frameworks im Python-Webentwicklungs-Ökosystem.

Schauen wir uns nun einige der Vorteile der Verwendung von Flask in der Entwicklung genauer an.

Einfachheit . Die Designphilosophie von Flask legt Wert auf Einfachheit, wodurch es für Entwickler auf allen Ebenen leicht zu verstehen und zu verwenden ist. Dies bedeutet auch, dass die Lernkurve für Entwickler sehr gering ist, da sie nur wenige Konzepte und APIs erlernen müssen, um mit der Erstellung von Webanwendungen zu beginnen.

Flexibilität . Die Mikronatur von Flask – die Bereitstellung nur der Kernfunktionen eines Web-Frameworks – gibt Entwicklern die Möglichkeit, es mithilfe von Flask-Erweiterungen oder Bibliotheken von Drittanbietern an ihre Anforderungen anzupassen und zu erweitern.

Dokumentation . Die Flask-Dokumentation ist sehr umfassend und deckt grundlegende bis fortgeschrittene Themen gut ab, sodass Entwickler sehr einfach die Verwendung des Frameworks erlernen können.

Kompatibilität . Flask ist mit einer Vielzahl von Python-Versionen kompatibel, was die Verwendung mit vorhandenen Python-Codebasen erleichtert. Es unterstützt außerdem mehrere Webserver, was die Bereitstellung auf verschiedenen Hosting-Plattformen erleichtert.

Schnelle Entwicklung . Die Einfachheit und Flexibilität von Flask reduzieren den Aufwand, der zum Einrichten einer Anwendung erforderlich ist, sodass Entwickler schnell loslegen können.

Im Internet wird Flask auf viele interessante Arten verwendet. Einige bemerkenswerte Beispiele sind:

Die Einfachheit und Benutzerfreundlichkeit von Flask machen es zu einer hervorragenden Wahl für eine Vielzahl von Webprojekten:

Obwohl Flask ein großartiges Framework ist und eine Reihe von Vorteilen und großartigen Funktionen bietet, gibt es Situationen, in denen diese Funktionen dagegen wirken. Lassen Sie uns einige der Projekte untersuchen, die besser zu anderen Arten von Frameworks passen.

Projekte, die integrierte Funktionalität erfordern . Als Mikroframework stellt Flask nur die Kernbits bereit, die zum Erstellen einer Webanwendung erforderlich sind. Wenn ein Projekt beispielsweise eine Admin-Schnittstelle, Authentifizierung oder ein ORM erfordert, ist Django die bessere Option.

Projekte mit strengen Sicherheitsanforderungen . Da Flask ein flexibles Framework ist, müssen wir uns auf Erweiterungen von Drittanbietern verlassen, um ein gewisses Maß an Sicherheit in unseren Apps zu implementieren. Obwohl dies sicherlich funktioniert, ist es besser, sich auf ein kampferprobteres Framework zu verlassen, das einen sichereren Ansatz verfolgt, wie zum Beispiel Tornado oder Twisted.

Projekte, die einen Codierungsstandard durchsetzen . Aufgrund der Flexibilität von Flask können Entwickler bei der Entwicklung von Anwendungen darauf Apps nach eigenem Ermessen erstellen. Allerdings stellen Frameworks wie Django sicher, dass Entwickler einer bestimmten Konvention folgen, was bedeutet, dass Entwickler problemlos von einem Projekt zum anderen wechseln können.

Schauen wir uns nun an, wie Sie mit Flask beginnen, von der Einrichtung der Entwicklungsumgebung über die Installation bis hin zum schließlichen Starten einer Minimalanwendung.

Python muss auf dem Entwicklungscomputer installiert sein. Hier finden Sie Anweisungen dazu (obwohl wir sie möglicherweise bereits installiert haben).

Eine virtuelle Umgebung ist eine isolierte Python-Umgebung, in der wir Pakete für ein bestimmtes Projekt installieren können, ohne die globale Python-Installation zu beeinträchtigen. (Hier finden Sie eine weitere Diskussion darüber, warum virtuelle Umgebungen nützlich sind.) Es gibt verschiedene Pakete zum Erstellen virtueller Umgebungen in Python, z. B. virtualenv, venv oder Conda.

In diesem Artikel verwenden wir virtualenv. Wir können es mit dem folgenden Befehl installieren:

Sobald virtualenv installiert wurde, können wir ein Verzeichnis erstellen, in dem sich unsere Flask-Anwendung befindet. Wir können das Verzeichnis beliebig nennen – außer Flask, da dies zu Konflikten führt. Wir nennen unsere flask_intro:

Wechseln Sie als Nächstes in dieses Verzeichnis, damit wir es verwenden können:

In diesem Verzeichnis erstellen wir nun unsere virtuelle Umgebung mit dem folgenden Befehl:

Der obige Befehl erstellt eine virtuelle Umgebung und nennt sie myenv. Aktivieren wir es, damit wir Flask darin installieren können. Um die virtuelle Umgebung zu aktivierenLinuxoderMac OS, verwenden Sie den folgenden Befehl:

AnWindows, verwenden Sie diesen Befehl:

Sobald unsere virtuelle Umgebung aktiviert wurde, wird an der Shell-Eingabeaufforderung der Name der virtuellen Umgebung angezeigt, ähnlich der folgenden Ausgabe:

In unserer aktivierten virtuellen Umgebung können wir Flask mit dem folgenden Befehl installieren:

Sobald die Installation von Flask abgeschlossen ist, können wir mit der Erstellung einer Minimalanwendung fortfahren. Wir erstellen ein Modul, das unsere Flask-Anwendung enthält. Der Einfachheit halber nennen wir es hello.py. AnLinuxoderMac OSMit dem folgenden Befehl können wir die Datei in unserem flask_intro-Verzeichnis erstellen:

Der obige Befehl erstellt eine Datei mit dem Namen hello.py. Wir könnten auch eine Entwicklungsumgebung verwenden, um die Datei zu erstellen. Sobald die Datei erstellt wurde, fügen Sie den folgenden Code ein und speichern Sie ihn:

Im obigen Code importieren wir die Flask-Klasse aus dem Flask-Modul, erstellen dann eine Instanz von Flask, die wir app nennen, und übergeben die Variable __name__.

Dann haben wir den Routendekorator @app.route("\"), was bedeutet, dass die Funktion hello_world() ausgelöst wird, wenn jemand die Stammroute unserer Anwendung besucht, sobald diese ausgeführt wird.

Es gibt verschiedene Möglichkeiten, die Anwendung auszuführen. Sehen wir uns einige davon an. Die erste Möglichkeit besteht darin, dem flask-Befehl eine Reihe von Argumenten zu übergeben: --app, dann den Namen des Moduls, das unsere Flask-Anwendung enthält, und dann ausführen. Siehe unten:

Verwenden Sie das obige Beispiel, um unsere Beispielanwendung auszuführen:

Dadurch wird unsere Anwendung auf dem Standardport 5000 ausgeführt, sodass die Anwendung unter http://localhost:5000/ oder unter http://127.0.0.1:5000/ verfügbar ist. Wenn wir möchten, dass die Anwendung auf einem anderen Port verfügbar ist, können wir den Port mit der Option -p oder --port angeben. Zum Beispiel:

Dadurch wird der Server auf Port 8080 ausgeführt. Die andere Möglichkeit, die Anwendung auszuführen, besteht darin, einfach die flask run-Befehle zu verwenden. Damit wir das jedoch tun können, müssen wir Flask den Namen des Moduls mitteilen, das die Flask-Instanz enthalten soll, und das tun wir, indem wir die Umgebungsvariable FLASK_APP festlegen. In unserem Fall ist die Flask-Anwendung also in einer Datei namens hello.py enthalten. Wir können es also so einstellen:

Nachdem wir nun die Umgebungsvariable FLASK_APP festgelegt haben, können wir den Entwicklungsserver wie folgt ausführen:

Mit diesem Code läuft jetzt eine Webanwendung. Dies zeigt die Kernphilosophie von Flask: Wir brauchen nicht viel Standardcode, um die Dinge in Gang zu bringen. Allerdings ist die Anwendung, die wir oben eingerichtet haben, nicht sehr funktional oder nützlich, da sie nur die Zeichenfolge „Hello World!“ wiedergibt. auf unserer Webseite. Um etwas Nützlicheres zu tun, können wir auf Vorlagen zurückgreifen. Als nächstes schauen wir uns an, wie wir damit umgehen.

Flaschenvorlagen sind eine Möglichkeit, dynamische Webseiten zu erstellen, die basierend auf verschiedenen Faktoren, wie z. B. Daten aus einer Datenbank oder Benutzereingaben, unterschiedliche Inhalte anzeigen können. Vorlagen in Flask sind eine Kombination aus HTML und speziellen Platzhaltern namensVorlagenvariablendie zur Laufzeit durch tatsächliche Werte ersetzt werden.

Vorlagen werden im Vorlagenverzeichnis gespeichert. Um Vorlagen zu verwenden, müssen wir die Methode render_template() aus flask importieren. Die Methode render_template() akzeptiert einen Vorlagennamen und alle optionalen Daten, die an die Vorlage übergeben werden müssen.

Sehen wir uns ein Beispiel einer Funktion an, die eine Vorlage zum Rendern einer Webseite verwendet:

Im obigen Beispiel haben wir eine Ansichtsfunktion – index() – die durch den @app.route()-Dekorator an die Stamm-URL („/“) gebunden ist. Die Funktion verfügt über zwei Variablen: Titel und Nachricht. Schließlich übergeben wir die Vorlage index.html zusammen mit den Variablen title und message an render_template().

Damit der obige Code funktioniert, muss sich eine index.html-Vorlage in einem Vorlagenverzeichnis befinden. Die Vorlage sieht also etwa so aus:

In der Datei index.html werden die Platzhalter {{title}} und {{ message }} durch die Werte ersetzt, die in der Methode render_template() an die Vorlage übergeben werden.

Vorlagen können auch komplexere Logik wie if-Anweisungen und for-Schleifen enthalten, die die Generierung dynamischerer Seiten ermöglichen.

Daher bieten Vorlagen in Flask Entwicklern eine sehr leistungsstarke Option zum Erstellen dynamischer Webseiten, die reich an benutzergenerierten Informationen sind.

Die meisten Webanwendungen haben mehr als eine URL, daher müssen wir wissen, welche Funktion welche URL verarbeitet. In Flask ist diese Zuordnung bekannt alsRoutenführung – der Prozess des Bindens oder Zuordnens von URLs zu Ansichtsfunktionen. Durch das Binden von URLs an Anzeigefunktionen kann die Anwendung verschiedene Arten von Anforderungen verarbeiten, z. B. GET, POST, PUT, DELETE und mehr. Dadurch kann die Anwendung auch mehrere Anfragen von verschiedenen Clients verarbeiten.

Um Routen in Flask einzurichten, verwenden wir den Route()-Dekorator. Der Dekorator bindet eine URL an eine Ansichtsfunktion. Wenn ein Benutzer also eine URL besucht, die in unserer Anwendung vorhanden ist, löst Flask die zugehörige Ansichtsfunktion aus, um die Anfrage zu verarbeiten.

Sehen wir uns ein Beispiel an:

Im obigen Beispiel definieren wir eine About-URL (/about). Wenn die Anwendung eine Anfrage nach der About-URL erhält, ruft Flask die Funktion about() auf, die die Zeichenfolge „Dies ist die About-Seite“ zurückgibt.

Obwohl diese Beispiele unterschiedliche Seiten zurückgeben, verwenden sie bisher alle nur die GET-HTTP-Anfrage. Um jede spezifische Anfrage bearbeiten zu können, können wir die HTTP-Methode als optionales Argument für den Route()-Dekorator angeben.

Sehen wir uns ein Beispiel einer PUT-Anfrage an:

In diesem Beispiel definieren wir eine Route, die eine PUT-Anfrage verarbeitet, um Benutzerdetails anhand ihrer Benutzer-ID zu aktualisieren. Wir verwenden in der Route, um anzugeben, dass die Benutzer-ID eine Ganzzahl sein sollte.

In der Funktion update_user() erhalten wir die Benutzerdaten aus dem Anfragetext mithilfe der Methode request.get_json(). Wir machen etwas mit den Benutzerdaten, wie zum Beispiel die Aktualisierung des Benutzers in der Datenbank, und geben dann eine Antwort zurück, die Erfolg oder Misserfolg angibt, zusammen mit einem HTTP-Statuscode (in diesem Fall 200, um den Erfolg anzuzeigen).

Insgesamt ermöglicht das Routing, dass Flask verschiedene Arten von Anfragen verarbeiten kann und dass unsere Anwendung Daten unterschiedlich verarbeiten und darauf reagieren kann, je nachdem, welche URL ein Benutzer besucht.

Neben der Anzeige von Daten für Benutzer können Flask-Vorlagen auch Eingaben von Benutzern zur weiteren Verarbeitung oder Speicherung entgegennehmen. Zu diesem Zweck bietet Flask integrierte Unterstützung für die Verarbeitung von HTML-Formularen und die Verarbeitung von Benutzereingaben. Flask-Formulare basieren auf der WTForms-Bibliothek, die eine flexible und leistungsstarke Möglichkeit bietet, Formulardaten zu verarbeiten und Validierungen durchzuführen. Da die Bibliothek jedoch nicht Teil der Standardinstallation von Flask ist, müssen wir sie mit dem folgenden Befehl installieren:

Nachdem wir WTForms installiert haben, müssen wir zur Verwendung von Formularen in Flask eine Formularklasse definieren, die von flask_wtf.FlaskForm erbt. Die Klasse enthält die Felder, die im Formular enthalten sein werden, sowie alle Validierungsregeln, die auf sie angewendet werden sollen.

Sehen wir uns ein Beispiel für ein Anmeldeformular an:

Im obigen Beispiel definieren wir ein Anmeldeformular mit zwei Feldern – E-Mail und Passwort – und einer Schaltfläche zum Senden. Wir haben auch ein Validator-Argument, das verwendet wird, um Validierungsregeln für jedes Feld anzugeben. In diesem Fall benötigen wir beispielsweise, dass das E-Mail-Feld eine gültige E-Mail-Adresse und das Passwortfeld ein Passwort mit mindestens sechs Zeichen enthält.

Sobald wir die Formularklasse definiert haben, können wir sie in der Anmeldeansichtsfunktion verwenden, um das Formular darzustellen und die vom Benutzer übermittelten Formulardaten zu verarbeiten. Sehen wir uns ein Beispiel der Ansichtsfunktion an:

Im obigen Beispiel haben wir eine Anmeldeansicht, die zwei HTTP-Methoden (GET und POST) akzeptiert. Wenn Benutzer also über einen Browser auf die URL zugreifen, wird das LoginForm mithilfe der render_template-Methode als HTML-Formular gerendert und wenn ein Benutzer das Formular sendet Wir prüfen, ob das Formular gültig ist, indem wir die Methode „validate_on_submit“ verwenden. Wenn das Formular gültig ist, greifen wir auf die E-Mail-Adresse und das Passwort zu.

Das login.html-Formular könnte etwa so aussehen:

Die obige Vorlage stellt die E-Mail- und Passwortfelder zusammen mit ihren Beschriftungen und einer Senden-Schaltfläche mit dem Text „Anmelden“ dar. Das Feld form.csrf_token ist enthalten, um Cross-Site-Request-Forgery-Angriffe (CSRF) zu verhindern. Die {% for %}-Schleifen werden verwendet, um eventuell auftretende Validierungsfehler anzuzeigen.

Durch die Verwendung von Flask-Formularen verfügen wir über eine leistungsstarke Methode zur Verarbeitung von Benutzereingaben und können die von ihnen eingegebenen Daten validieren.

Wie wir gesehen haben, ist Flask ein Mikroframework, das nur die wichtigsten Teile enthält, die zum Erstellen einer Webanwendung erforderlich sind. Wenn wir jedoch Funktionen hinzufügen müssen, die von Flask nicht standardmäßig angeboten werden, müssen wir der Installation Pakete hinzufügen. Mit Flaschenerweiterungen stellen wir diese zusätzliche Funktionalität bereit. Wir können einfach das Paket installieren, das wir benötigen. Es gibt viele Erweiterungen der Flask-Community.

Hier sind einige der beliebtesten:

Es gibt Hunderte von Erweiterungen der Flask-Community, um verschiedene Funktionen zu verwalten. Die Verwendung der Erweiterungen ist im Allgemeinen unkompliziert. Zuerst müssen wir die gewünschte Erweiterung mit pip installieren.

Sehen wir uns ein Beispiel für die Verwendung von Flask-SQLAlchemy an. Zuerst müssen wir es installieren:

Als nächstes müssen wir es konfigurieren. Zum Beispiel:

Im obigen Beispiel haben wir ein Benutzermodell mit einem Benutzernamen- und E-Mail-Feld. Wir konfigurieren auch SQLALCHEMY_DATABASE_URI und geben an, dass wir eine SQLite-Datenbank verwenden, die sich unter example.db befindet. Mit diesem Satz haben wir nun Zugriff auf das Datenbankobjekt, das uns die Interaktion mit der Datenbank ermöglicht. Wir könnten beispielsweise einen neuen Benutzer erstellen und ihn der Datenbank hinzufügen, etwa so:

Mit Flask-Erweiterungen kann unsere Anwendung über mehr Funktionalität verfügen, als sie normalerweise mit der Kernimplementierung von Flask hätte.

In diesem Artikel haben wir Flask vorgestellt, ein leichtes und flexibles Webframework für Python. Wir haben die Vorteile der Verwendung von Flask für die Webentwicklung besprochen, einschließlich seiner Einfachheit, Flexibilität und Benutzerfreundlichkeit. Wir haben auch behandelt, wie man eine Entwicklungsumgebung einrichtet, Routen erstellt, Vorlagen verwendet, Formulare verarbeitet und Erweiterungen wie Flask-SQLAlchemy verwendet.

Zusammenfassend lässt sich sagen, dass Flask eine großartige Wahl für die Erstellung von Webanwendungen jeder Größe ist, von kleinen persönlichen Projekten bis hin zu groß angelegten kommerziellen Anwendungen. Es ist leicht zu erlernen und zu verwenden, bietet aber durch seine vielen Erweiterungen auch erweiterte Funktionen.

Wenn Sie mehr über Flask erfahren möchten, finden Sie hier einige zusätzliche Ressourcen:

Wenn Sie mehr über Django und Flask und ihre besten Anwendungsfälle erfahren möchten, schauen Sie sich Python Web Development with Django and Flask an.

Kabaki ist ein Full-Stack-Softwareentwickler und technischer Redakteur mit einer Leidenschaft für die Schaffung innovativer digitaler Erlebnisse. Wenn er nicht gerade programmiert, teilt er gerne sein Wissen mit anderen, indem er technische Artikel schreibt, um Entwicklern dabei zu helfen, ihre Fähigkeiten zu verbessern.

In diesem Artikel stellen wir Flask vor, ein beliebtes Mikroframework für Python, das eine Alternative zum Riesen Django bietet. Einfachheit Flexibilität Dokumentation Kompatibilität Schnelle Entwicklung PgAdmin Twilio Pinterest Prototyping Erstellen von RESTful APIs E-Commerce-Apps Finanzen KI Projekte, die integrierte Funktionalität erfordern Projekte mit strengen Sicherheitsanforderungen Projekte, die einige Codierungsstandards erzwingen Linux macOS Windows Linux macOS Flask-Vorlagen Vorlagenvariablen-Routing Flask-SQLAlchemy Flask- Anmelden Flask-Mail