Einführung
In diesem Lab lernst du, wie du Konfigurationen in einer Flask-Anwendung behandelst. Mit der Konfiguration kannst du Einstellungen in deiner Anwendung basierend auf verschiedenen Umgebungen ändern, wie z. B. das Umschalten des Debug-Modus, das Festlegen von Geheimschlüsseln und andere umgebungsabhängige Variablen.
Hinweis: Du musst die Code-Datei selbst erstellen und sie in der Umgebung ausführen. Du kannst den Status des Flask-Diensts auf Web 5000 vorab anzeigen.
Erstelle eine Flask-Anwendung
Zunächst erstellen wir eine einfache Flask-Anwendung. Erstelle eine Datei namens app.py und füge den folgenden Code hinzu:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, Flask!'
Um die Anwendung auszuführen, führe den folgenden Befehl in deiner Konsole aus:
python app.py
Öffne deinen Webbrowser und besuche http://localhost:5000, um die Nachricht "Hello, Flask!" zu sehen.
Grundlegende Konfiguration
Fügen wir nun einigen grundlegenden Konfigurationen zu unserer Flask-Anwendung hinzu. In derselben Datei app.py fügen wir folgenden Code hinzu:
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'mysecretkey'
Die DEBUG-Konfiguration aktiviert den Debug-Modus, der während der Entwicklung hilfreiche Fehlermeldungen liefert. Die SECRET_KEY-Konfiguration wird verwendet, um Sitzungscookies sicher zu signieren und andere sicherheitsrelevante Anforderungen zu erfüllen.
Um auf die Konfigurationswerte zuzugreifen, kannst du das app.config-Dictionary verwenden. Beispielsweise um den Wert von SECRET_KEY auszugeben, füge folgenden Code der hello-Route hinzu:
@app.route('/')
def hello():
secret_key = app.config['SECRET_KEY']
return f'Hello, Flask! Secret Key: {secret_key}'
Starte die Flask-Anwendung neu und besuche http://localhost:5000, um die aktualisierte Nachricht mit dem Geheimschlüssel zu sehen.
Konfiguration aus Dateien
Das Hardcodieren von Konfigurationswerten im Code ist nicht ideal, insbesondere für sensible Informationen. Flask bietet eine Möglichkeit, die Konfiguration aus separaten Dateien zu laden. Erstelle eine neue Datei namens config.py und füge folgenden Code hinzu:
DEBUG = False
SECRET_KEY ='myothersecretkey'
In der Datei app.py ersetze den vorherigen Konfigurationscode durch folgenden:
app.config.from_object('config')
Die from_object-Methode lädt die Konfiguration aus dem config-Modul. Jetzt werden die DEBUG- und SECRET_KEY-Werte aus der config.py-Datei geladen.
Starte die Flask-Anwendung neu und besuche http://localhost:5000, um die aktualisierte Nachricht mit den neuen Konfigurationswerten zu sehen.
Umgebungsbasierte Konfiguration
Es ist üblich, unterschiedliche Konfigurationen für verschiedene Umgebungen wie Entwicklung, Produktion und Testing zu haben. Flask ermöglicht es dir, die Konfigurationen basierend auf Umgebungsvariablen zu wechseln. Erstelle eine neue Datei namens config_dev.py und füge folgenden Code hinzu:
DEBUG = True
SECRET_KEY = 'devsecretkey'
Erstelle eine weitere Datei namens config_prod.py mit folgendem Code:
DEBUG = False
SECRET_KEY = 'prodsecretkey'
In der Datei app.py ersetze den vorherigen Konfigurationscode durch folgenden:
import os
if os.environ.get('FLASK_ENV') == 'production':
app.config.from_object('config_prod')
else:
app.config.from_object('config_dev')
Die Umgebungsvariable FLASK_ENV wird verwendet, um die Umgebung zu bestimmen. Wenn sie auf 'production' gesetzt ist, wird die Produktionskonfiguration geladen; andernfalls wird die Entwicklungs-Konfiguration geladen.
Setze die Umgebungsvariable FLASK_ENV auf 'production' und starte die Flask-Anwendung neu. Besuche http://localhost:5000, um die aktualisierte Nachricht mit den Produktionskonfigurationswerten zu sehen.
Instanzordner
Flask bietet einen Instanzordner zum Speichern von Konfigurationsdateien, die für eine bestimmte Bereitstellung spezifisch sind. Dadurch kannst du die für die Bereitstellung spezifischen Konfigurationen von dem Rest deines Codes trennen. Standardmäßig verwendet Flask einen Ordner namens instance im selben Verzeichnis wie deine Anwendung.
Erstelle einen neuen Ordner namens instance im selben Verzeichnis wie deine app.py-Datei. Im instance-Ordner erstelle eine Datei namens config.cfg und füge folgenden Code hinzu:
DEBUG = True
SECRET_KEY = 'instancekey'
In der app.py-Datei füge folgenden Code vor dem Konfigurationscode hinzu:
app.instance_path = os.path.abspath(os.path.dirname(__file__))
app.config.from_pyfile('config.cfg')
Der instance_path wird auf den absoluten Pfad des instance-Ordners gesetzt. Die from_pyfile-Methode lädt die Konfiguration aus der config.cfg-Datei im Instanzordner.
Starte die Flask-Anwendung neu und besuche http://localhost:5000, um die aktualisierte Nachricht mit den Instanz-Konfigurationswerten zu sehen.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie die Konfiguration in einer Flask-Anwendung verwalten. Sie haben gelernt, wie Sie grundlegende Konfigurationswerte festlegen, die Konfiguration aus Dateien laden, die Konfiguration basierend auf Umgebungsvariablen wechseln und einen Instanzordner für die für die Bereitstellung spezifischen Konfigurationen verwenden. Die Konfiguration ist ein wichtiger Aspekt beim Aufbau robuster und flexibler Flask-Anwendungen.