Dieses einführende Python Flask-Tutorial erklärt, was Flask ist, die Installation von Python, Virtualenv, Flask Hello World Beispiel mit einem Abschnitt über Code-Beispiele, Debugging und Testen:
Die Entwicklung einer Website ist eher eine Kunst als eine Fertigkeit. Sie erfordert Geduld und Fleiß sowie Ausdauer, Mut und Hingabe, um das zu schaffen, was für einen echten Erfolg notwendig ist. Heutzutage ist es für Lernende unerlässlich, so schnell wie möglich mit der Materie vertraut zu werden.
Wir haben dieses Python Flask-Tutorial für die Studenten erstellt, um einfache und komplexe Web-Programmierung mit Python 3 zu implementieren.
Dieses Python-Flask-Tutorial ist eher ein Flask-Einsteiger-Tutorial, das die Installation von Python, Virtualenv und anderen wichtigen Paketen behandelt. In dieser Tutorial-Reihe werden wir auch Flask zusammen mit den anderen notwendigen Flask-Plugins installieren. Wir haben auch einen Abschnitt über das Debuggen von Code, das Testen und die kontinuierliche Integration mit Git Actions aufgenommen.
Liste der Tutorials in dieser Flask-Serie
Tutorial #1: Python Flask Tutorial - Einführung in Flask für Einsteiger
Tutorial #2: Flask-Vorlage, Formular, Ansicht und Umleitung mit Beispielen
Tutorial #3: Flask Database Handling - Wie man Flask mit einer Datenbank verwendet
Tutorial #4: Flask App und Flask Projekt Layout mit Blueprint & Bootstrap
Tutorial #5: Flask Design Patterns und Best Practices für Webanwendungen
Tutorial #6: Flask API Tutorial mit Beispiel
Tutorial #7: Django Vs Flask Vs Node: Welches Framework wählen
Tutorial #8: Top 31 beliebte Python Flask Interview Fragen mit Antworten
Was ist ein Flachmann?
Flask ist ein Framework für die Webentwicklung. Es handelt sich um ein Framework mit einem eingebauten Entwicklungsserver und einem Debugger.
Das Flask-Framework an sich unterscheidet sich von den anderen Archetypen, da es Webentwicklern erlaubt, flexibel zu sein und sich bequem an die häufig veröffentlichten Änderungen in der Softwareentwicklungsgemeinschaft anzupassen.
Wofür wird der Flachmann verwendet?
Wir verwenden das Flask-Framework für die Entwicklung von Webanwendungen in der Programmiersprache Python. Es lässt sich mit anderen Diensten und APIs von Drittanbietern integrieren, um die zu entwickelnde Anwendung reichhaltiger und sinnvoller zu gestalten. Die Kernkonzepte von Flask sind einfach, und der Platzbedarf ist gering.
Beginnen wir mit diesem Python-Flask-Tutorial, um die Webentwicklung mit Hilfe eines Flask-GitHub-Repositorys zu verstehen. Bevor Sie jedoch fortfahren, klonen Sie bitte das Projekt von Github, um die besprochenen Codebeispiele leicht nachvollziehen zu können.
Voraussetzungen
Abgesehen von den in diesem Abschnitt genannten Punkten empfehlen wir, einen Github-Account zu erstellen. Fahren wir mit den unten genannten Schritten in den Voraussetzungen fort.
Schritt 1: Python installieren
Prüfen Sie, ob Sie Python 3 installiert haben oder nicht. Wenn nicht, laden Sie Python 3 von hier herunter und installieren Sie es entsprechend Ihrem Betriebssystem.
Schritt 2: Erstellen einer virtuellen Python-Umgebung
Erstellen Sie eine virtuelle Umgebung mit dem folgenden Befehl.
python3 -m venv venv
Verwenden Sie den folgenden Befehl, um die virtuelle Python-Umgebung zu aktivieren.
Quelle venv/bin/activate
Im Folgenden finden Sie ein Beispiel für die Aktivierung und Deaktivierung der virtuellen Umgebung.
Alle nachfolgenden Befehle in diesem Tutorial sollten in einer aktivierten virtuellen Umgebung ausgeführt werden. Installieren Sie das wheel-Paket, damit wir in der virtuellen Umgebung wheels bauen können.
pip install wheel
Schritt 3: Flask herunterladen und installieren
Wir müssen die Schritte zum Herunterladen von Flask durchführen und Flask mit den unten genannten Schritten installieren.
Installieren Sie nun Flask.
pip install flask
Einige von uns arbeiten gerne mit den neuesten Quellcodeänderungen. Wir können den unten angegebenen Befehl verwenden, um mit den neuesten Änderungen an den Quellen von Flask zu installieren.
Legen Sie ein temporäres Verzeichnis an.
mkdir tmp
Installieren Sie nun Flask aus dem Github-Repository. Sie müssen mit dem Internet verbunden bleiben, damit der folgende Befehl funktioniert.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Schauen Sie sich die Konsolenausgaben an, um die erfolgreiche Installation zu überprüfen. Prüfen Sie nun, ob wir auf Flask-Befehle zugreifen können.
flask --help
Möglicherweise werden Sie einige Ausnahmen sehen, die auf das Fehlen einer Flask-Anwendung hinweisen. Diese sind jedoch zu vernachlässigen, da wir keine Flask-Anwendung erstellt haben. Unsere Anwendung ist eine Instanz von Flask, das ein Wrapper auf dem Werkzeug-Webframework und der Jinja-Templating-Engine ist.
Werkzeug
Werkzeug ist ein WSGI-Toolkit. WSGI ist lediglich eine Aufrufkonvention für Webserver zur Weiterleitung von Webanfragen für Webanwendungen, die in der Programmiersprache Python geschrieben sind.
Jinja
Templating ist eine wesentliche Fähigkeit von Webentwicklern. Jinja ist eine voll ausgestattete und beliebte Templating-Engine für Python. Es ist eine sehr ausdrucksstarke Sprache und bietet eine Reihe von robusten Tools für Template-Autoren.
Schritt 4: MongoDB installieren
Folgen Sie den unten aufgeführten Schritten, um MongoDB zu installieren. Wir haben die Schritte für die Installation auf einem Debian-basierten Linux skizziert. Wenn Sie ein anderes Betriebssystem verwenden, greifen Sie auf den Link zu und installieren Sie entsprechend dem gewünschten Betriebssystem.
Installieren Sie gnupg, um den öffentlichen GPG-Schlüssel von MongoDB zu importieren.
sudo apt-get install gnupg
Importieren Sie nun den Schlüssel mit dem unten stehenden Befehl.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc
Erstellen Sie die Datei mit den Quellen gemäß Ihrer Linux-Distribution. Wir haben die Liste der Quellen gemäß Debian hinzugefügt.
echo "deb //repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main"
Update-Befehl ausführen
sudo apt-get update
Installieren Sie nun MongoDB, indem Sie den folgenden Befehl verwenden.
sudo apt-get install -y mongodb-org
Wenn die Installation erfolgreich war, starten Sie MongoDB mit dem folgenden Befehl.
sudo systemctl start mongod
Überprüfen Sie den Status von MongoDB mit dem folgenden Befehl.
sudo systemctl status mongod
Stellen Sie nun sicher, dass mongod beim Neustart des Systems automatisch startet, indem Sie den unten gezeigten Befehl eingeben.
sudo systemctl enable mongod
Prüfen Sie nun, ob Sie sich mit dem MongoDB-Server über den Mongo-Client verbinden können.
mongo
Verwenden Sie in der Mongo-Shell die Befehle help und show dbs.
Eine Flask-App erstellen
Verwenden Sie den folgenden Befehl, um flask-appbuilder und mongoengine zu installieren.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Erstellen Sie eine Skelettanwendung mit den Werten, die im folgenden Codeschnipsel als Kommentare angegeben sind.
flask fab create-app # Geben Sie die folgenden Werte in den Befehlszeilenfragebogen ein # Anwendungsname: flaskTutorialApp # EngineType : MongoEngine
Es wird eine Ausgabe ähnlich der folgenden angezeigt.
Ihr neuer App-Name: exampleApp Ihr Engine-Typ, SQLAlchemy oder MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Ich habe die Skelett-App heruntergeladen, gute Programmierung!
Schauen Sie sich das Layout des Projekts und der Anwendung an. Wir haben die Ausgabe des Tree-Befehls unten gezeigt.
Werfen wir einen Blick auf die Flask-Konfigurationsdatei. Es handelt sich um eine Standardkonfiguration, die als Ergebnis des letzten Befehls generiert wurde. Unkommentiert Cyborg Thema, wie unten dargestellt.
# Themenkonfiguration für Cybord=g # diese Themen befinden sich auf static/appbuilder/css/themes # wir können unsere eigenen erstellen und sie einfach verwenden, indem wir sie in derselben Verzeichnisstruktur ablegen, um sie zu überschreiben #APP_THEME = "bootstrap-theme.css" # default bootstrap #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # amelia theme #APP_THEME = "cosmo.css" # cosmo theme APP_THEME = "cyborg.css" # cyborgtheme #APP_THEME = "flatly.css" # flatly theme
Um die Skelettanwendung auszuführen, verwenden Sie den unten angegebenen Befehl im Terminal.
Kolbenlauf
Flask Hallo Welt
Um Ihr erstes Programm in der flaskTutorialApp zu erstellen, öffnen Sie die Datei views.py im app-Verzeichnis und fügen Sie den folgenden Code ein. Suchen Sie nach Import-Anweisungen in der Datei. Fügen Sie diese Anweisungen hinzu, falls sie nicht bereits vorhanden sind.
from flask_appbuilder import BaseView, expose from app import appbuilder class HelloWorld(BaseView): """ Diese erste Ansicht des Tutorials """ route_base = "/hello" @expose("/") def hello(self): return "Hello, World! from Software Testing Help" # am Ende der Datei appbuilder.add_view_no_menu(HelloWorld())
Speichern Sie die Datei, nachdem Sie den obigen Quellcode hinzugefügt haben. Gehen Sie zum Stammverzeichnis des Projekts und verwenden Sie den folgenden Befehl, um den Entwicklungsserver von Flask zu starten.
Kolbenlauf
Navigieren Sie nun zu //localhost:5000/hello/, um die Ausgabe im Browser zu sehen.
Fehlersuche
Derzeit läuft der Entwicklungsserver nicht im Debug-Modus. Ohne Debug-Modus ist es schwierig, die Fehler im Quellcode der Flask-Anwendung zu finden.
Der Debug-Modus in Flask führt zu folgendem Ergebnis:
- Der Debug-Modus aktiviert den automatischen Reloader, d.h. der Entwicklungsserver muss nicht neu gestartet werden, wenn Änderungen am Quellcode der Anwendung vorgenommen werden.
- Der Debug-Modus aktiviert den Python-Debugger, so dass wir die Werte der Variablen während der Exception überprüfen können.
- Der Debug-Modus ermöglicht das Debuggen der Flask-Anwendung. In Debugging-Sitzungen können wir die Werte verschiedener Variablen überprüfen.
Halten Sie den Entwicklungsserver an, falls er bereits läuft, indem Sie STRG + C oder die Tastaturunterbrechung verwenden.
Verwenden Sie den folgenden Code, um den Debug-Modus zu aktivieren und den Entwicklungsserver vorübergehend auszuführen.
FLASK_ENV=Entwicklungsflaschenlauf
Suchen Sie in der Konsole nach der Debugger-PIN und notieren Sie sich diese.
Ändern wir nun die oben geschriebene HelloWorld-Ansicht mit den folgenden Zeilen des Code-Schnipsels. Beachten Sie, dass wir eine benutzerdefinierte Ausnahme eingeführt haben.
@expose("/") def hello(self): raise Exception("Eine benutzerdefinierte Ausnahme zum Erlernen des DEBUG-Modus") return "Hallo, Welt! von Software Testing Help"
Navigieren Sie zu //localhost:5000/hello/, und Sie werden sehen, dass die Anwendung eine Ausnahme ausgelöst hat. Der Browser zeigt den Stack-Trace an, wie unten dargestellt.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Schauen Sie sich außerdem die Konsole an, auf der der Entwicklungsserver läuft. Sie werden feststellen, dass diesmal die Änderungen in der Datei views.py automatisch erkannt werden und der Debug-Server von selbst neu startet. Jetzt müssen wir ihn nicht mehr manuell neu starten.
Auf der Konsole werden Zeilen angezeigt, wie unten dargestellt. Wir müssen uns die Debug-PIN für später notieren.
* Erkannte Änderung in '/work/sth/flaskTutorialApp/app/views.py', nachladen 2020-06-02 14:59:49,354:INFO:werkzeug: * Erkannte Änderung in '/work/sth/flaskTutorialApp/app/views.py', nachladen * Neustart mit stat 2020-06-02 14:59:49,592:INFO:werkzeug: * Neustart mit stat * Debugger ist aktiv! * Debugger PIN: 150-849-897
Prüfen Sie nun den Stack-Trace im Browser und gehen Sie zur letzten Zeile. Klicken Sie darauf, um die Ansicht zu erweitern, und klicken Sie auf das CLI-Symbol, um die Shell im interaktiven Modus zu öffnen.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Sobald Sie es öffnen, werden Sie sehen, dass der Browser eine Aufforderung zur Eingabe der Debug-PIN anzeigt. Geben Sie die Debug-PIN ein und klicken Sie auf OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Sobald wir nach der Eingabe der Debug-PIN fortfahren, können wir auf die interaktive Shell zugreifen.
Wir greifen vom Browser aus auf die Shell zu und können die Werte der Variablen untersuchen, um die Ursache der Ausnahme zu finden und den Fehler besser zu behandeln. Sehen Sie sich eines der Beispiele in der folgenden Abbildung an.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Ändern Sie nun den Code in view.py, wie unten gezeigt. Beachten Sie, dass wir die Zeile mit der ausgelösten Exception auskommentiert haben.
@expose("/") def hello(self): # raise Exception("Eine benutzerdefinierte Ausnahme zum Erlernen des DEBUG-Modus") return "Hallo, Welt! von Software Testing Help"
Testen der Flask-Anwendung
Schreiben wir nun unseren ersten Test für die Flask-Anwendung, die wir entwickeln. Als erstes installieren wir PyTest. PyTest ist ein Test-Framework, das uns hilft, besseren Code zu schreiben.
Außerdem ist es möglich, den TDD-Ansatz zu verfolgen, da wir während der Entwicklung unserer Anwendungen Unit-Tests schreiben können. TDD steht für Test-Driven Development. In den folgenden Tutorials dieser Reihe werden wir immer zuerst Tests schreiben und dann unsere Views oder Modelle entwickeln.
PyTest installieren
pip install pytest
Erstellen Sie nun ein Verzeichnis namens tests innerhalb des App-Verzeichnisses und darin eine Datei namens test_hello.py. Schreiben wir unseren ersten Unit-Test, um unseren View zu testen.
Kopieren Sie den folgenden Codeschnipsel und fügen Sie ihn in test_hello.py ein.
#!/usr/bin/env python from app import appbuilder import pytest @pytest.fixture def client(): """ Ein pytest fixture für Testclient """ appbuilder.app.config["TESTING"] = True with appbuilder.app.test_client() as client: yield client def test_hello(client): """ Eine Testmethode zum Testen der Ansicht hello """ resp = client.get("/hello", follow_redirects=True) assert 200 == resp.status_code
Verwenden Sie den folgenden pytest-Befehl, um die Tests auszuführen. PyTest sammelt automatisch die Tests und zeigt die Ergebnisse auf der Standardausgabe an.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Einen GitHub-Workflow erstellen
Wir verwenden Git Actions, um einen CI/CD-Workflow für unsere Beispielanwendung zu erstellen. Folgen Sie den unten aufgeführten Schritten für Ihr Projekt.
Schritt 1: Navigieren Sie zur Repository-Seite auf GitHub und klicken Sie auf Git-Aktionen.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Schritt 2: Blättern Sie auf der Seite nach unten und suchen Sie eine vorhandene Workflow-Vorlage für ein Python-Paket.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Schritt 3: Einrichten des Python-Pakets Workflow.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Schritt 4: Sobald die Workflow-Konfiguration python-package.yml geöffnet ist, aktualisieren Sie sie anhand der angegebenen zusätzlichen yaml-Tag-Werte.
name: flaskTutorialApp jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: [3.7, 3.8] mongodb-version: [4.2] steps: - name: Start MongoDB uses: supercharge/[email protected] with: mongodb-version: ${{ matrix.mongodb-version }} # other values
Wir wollen unsere Flask-Anwendung auf der neuesten Ubuntu-Linux-Distribution testen. Zusätzlich zum Betriebssystem wollen wir unsere Tests nur mit Python 3.7 und Python 3.8 durchführen.
Schritt 5: Übertragen Sie die Datei python-package.yml mit den aktualisierten Werten.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Schritt 6: Die Übergabe auf der vorherigen Seite führt uns zu den GitActions-Aufträgen.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Schritt 7: [Fakultativ]
Auf der Github Jobs-Seite für die Beispielanwendung können wir ein Badge erstellen und es in der README.md-Datei platzieren, um den Build-Status anzuzeigen.
Wenn nun die Änderungen in den Master-Zweig übertragen werden, wird der Git-Workflow, wie in python-package.yml beschrieben, befolgt und auf Git-Aktionen ausgeführt.
Schlussfolgerung
In diesem Tutorial haben wir alle grundlegenden Konzepte von den Voraussetzungen bis zur Einrichtung des CI/CD-Workflows für eine mit Flask - einem Python-basierten Webentwicklungs-Framework - entwickelte Webanwendung behandelt.
Dieses Tutorial deckt alle notwendigen Schritte ab, wie z.B. die Installation von Python, das Herunterladen von & die Installation von Flask, die Arbeit mit dem Flask-Appbuilder, das Testen mit PyTest, usw., um mit der Web-Entwicklung unter Verwendung von Python zu beginnen. Die Web-Entwicklungs-Community vergleicht Flask gewöhnlich mit einem anderen populären Python-Framework für die Web-Entwicklung namens Django.
In einem der Tutorials dieser Reihe werden wir diese Unterschiede erläutern und die beiden Frameworks miteinander vergleichen.