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.

FunktionenDjangoFlask
DesignphilosophieVon Haus aus (Batteries Included)Micro-Framework, bei Bedarf erweiterbar
ORMIntegriertes Django ORMFlask-SQLAlchemy (Erweiterung)
DatenbankmigrationenIntegrierte makemigrations/migrateFlask-Migrate (Erweiterung)
BenutzerauthentifizierungIntegriertes Auth-ModulFlask-Login (Erweiterung)
Admin-PanelIntegriertes Django AdminFlask-Admin (Erweiterung)
Template-EngineDjango-TemplatesJinja2 (Syntax ist nahezu identisch)
RoutenkonfigurationZentrale Konfiguration in urls.pyDekoratoren 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

# Dateipfad: app.py
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.

BefehlFunktion
flask runDen Entwicklungsserver starten
flask run --debugServer starten + Hot Reload + Debug-Modus
flask routesAlle registrierten Routen auflisten
flask shellInteraktive 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

# Dateipfad: app.py
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.

Weitere Erweiterungen