Flask-Webanwendung
Dieses Kapitel führt Sie von Grund auf durch die Erstellung Ihrer ersten Webanwendung mit Flask und vermittelt die Designphilosophie von Mikro-Frameworks.
Positionierungsunterschiede zwischen Flask und Django
Django ist ein "All-in-One"-Full-Stack-Framework mit integriertem ORM, Template-Engine, Admin-Backend, Benutzerauthentifizierung, Formularverarbeitung und mehr.
Flask ist ein Microframework—Der Kern ist minimal und bietet nur Routing und Template-Rendering; weitere Funktionen werden bei Bedarf über Erweiterungen hinzugefügt.
| Funktionen | Django | Flask |
|---|---|---|
| Designphilosophie | Von Haus aus (Batteries Included) | Micro-Framework, bei Bedarf erweiterbar |
| ORM | Integriertes Django ORM | Flask-SQLAlchemy (Erweiterung) |
| Datenbankmigrationen | Integrierte makemigrations/migrate | Flask-Migrate (Erweiterung) |
| Benutzerauthentifizierung | Integriertes Auth-Modul | Flask-Login (Erweiterung) |
| Admin-Panel | Integriertes Django Admin | Flask-Admin (Erweiterung) |
| Template-Engine | Django-Templates | Jinja2 (Syntax ist nahezu identisch) |
| Routenkonfiguration | Zentrale Konfiguration in urls.py | Dekoratoren lokal deklarieren |
Empfehlung: Einsteiger, die schnelle Ergebnisse wünschen, verwenden Django; wer volle Kontrolle und bedarfsgerechte Zusammenstellung mag, verwendet Flask.
Umgebungsvorbereitung
Python-Version bestätigen (erfordert 3.8 oder höher):
$ python3 --version Python 3.12.0
Virtuelle Umgebung erstellen und Flask installieren
$ python3 -m venv venv $ source venv/bin/activate # Windows:venv\Scripts\activate (venv) $ pip install flask
Installation überprüfen:
(venv) $ python -c "import flask; print(flask.__version__)" 3.1.0
Minimale Flask-Anwendung
Eine Flask-Anwendung benötigt nur eine Python-Datei.
Beispiel
from flask import Flask
# Eine Flask-App-Instanz erstellen
# __name__ teilt Flask den Speicherort des aktuellen Moduls mit (wird zum Auffinden von Templates und statischen Dateien verwendet)
app = Flask(__name__)
# @app.route("/") — Route-Dekorator: führt die folgende Funktion aus, wenn auf den Pfad / zugegriffen wird
@app.route("/")
def index():
return '<h1>Willkommen bei EXAMPLE Blog</h1>'
# Wenn Sie python app.py direkt ausführen (statt flask run), starten Sie den Entwicklungsserver
if __name__ == '__main__':
app.run(debug=True)
Den Entwicklungsserver starten
(venv) $ flask run * Running on http://127.0.0.1:5000
Besuchen Sie http://127.0.0.1:5000/ in Ihrem Browser und sehen Sie sich den Seiteninhalt an.
Hot-Reload aktivieren (Server nach Codeänderungen automatisch neu starten):
(venv) $ flask run --debug
flask runStandard-Sucheapp.pyinappInstanz. Wenn der Dateiname oder Instanzname anders ist, müssen Sie Umgebungsvariablen festlegen:FLASK_APP=myapp.py(Dateiname),FLASK_APP=myapp:create_app()(Factory-Funktion).
Flask-Kommandozeilen-Tool
exceptflask run, Flask bietet auch weitere nützliche Befehle.
| Befehl | Funktion |
|---|---|
| flask run | Den Entwicklungsserver starten |
| flask run --debug | Server starten + Hot Reload + Debug-Modus |
| flask routes | Alle registrierten Routen auflisten |
| flask shell | Interaktive Shell betreten (importiert automatisch die App-Instanz) |
Planung der Projektverzeichnisstruktur
Obwohl Flask Single-File-Anwendungen unterstützt, benötigen echte Projekte eine klare Verzeichnisstruktur.
blog_project/ ├── app/ │ ├── __init__.py # 应用工厂 create_app()(第十章引入) │ ├── blueprints/ # 路由 Blueprint(第四章分离) │ ├── templates/ # Jinja2 模板(第二章创建) │ ├── static/ # 静态文件 CSS/JS/图片 │ ├── models.py # SQLAlchemy 模型(第三章创建) │ └── forms.py # Flask-WTF 表单(第八章创建) ├── config.py # 配置文件 ├── app.py # 应用入口(第一章从这里开始) └── .env # 环境变量
Praktische Übung: Blog-Homepage-Route
Projektgerüst erstellen, die Homepage-Route konfigurieren und den Browser eine Willkommensnachricht anzeigen lassen.
Beispiel
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
"""Blog-Startseite"""
return """
<h1>Willkommen bei EXAMPLE Blog</h1>
<p>Dies ist eine persönliche Blog-Präsentationsseite, die mit Flask erstellt wurde.</p>
<p>Weitere Inhalte folgen bald, bleibt dran.</p>
"""
@app.route("/about")
def about():
"""Über diese Seite"""
return '<h1>Über diese Seite</h1><p>Notizen zum Frontend- und Backend-Lernen.</p>'
Ausführen:
flask run
Besuchen Sie die Startseite und die About-Seite, um zu bestätigen, dass die Routen ordnungsgemäß funktionieren.
Kapitelzusammenfassung
In diesem Kapitel haben Sie drei Dinge erledigt: eine virtuelle Umgebung erstellt und Flask installiert, den Positionierungsunterschied zwischen Flask als Microframework und Django als All-in-One-Framework verstanden und Ihre erste Route-Seite geschrieben.
Kernaussage: Eine minimale Flask-Anwendung benötigt nurFlask(__name__) + @app.route()Dekorator, mitflask runStart.