Flask Config Konfigurationsklassen-API
Config ist eine Wörterbuch-Unterklasse, die verwendet wird, um alle Konfigurationselemente für Flask-Anwendungen zu verwalten.
Durchapp.configZugriff, mit Unterstützung für das Laden der Konfiguration aus mehreren Quellen.
Config-Klassenmethoden
| Methoden | Signatur | Beschreibung |
|---|---|---|
| from_pyfile | (filename, silent=False) | Lädt die Konfiguration aus einer Python-Datei. Wenn silent=True, werden Fehler wegen nicht gefundener Datei ignoriert. |
| from_object | (obj) | Lädt die Konfiguration aus einem Objekt (Modul, Klasse, Importpfad als String). Nur Attribute in Großbuchstaben werden geladen. |
| from_envvar | (variable_name, silent=False) | Lädt die Konfiguration aus einer Datei, auf die eine Umgebungsvariable verweist. Entspricht from_pyfile(os.environ[var]). |
| from_prefixed_env | (prefix="FLASK", *, loads=json.loads) | Lädt aus Umgebungsvariablen. Liest Variablen mit dem Präfix FLASK_, entfernt das Präfix und legt sie als Konfiguration fest. |
| from_file | (filename, load, silent=False, text=True) | Aus Dateien in beliebigem Format laden. "load" ist die Parsing-Funktion (z. B. json.load, tomllib.load). |
| from_mapping | (mapping=None, **kwargs) | Konfiguration aus einem Mapping-Objekt laden. Optionale **kwargs-Schlüssel-Wert-Paare. Nur Schlüssel in Großbuchstaben werden geladen. |
| get_namespace | (namespace, lowercase=True, trim_namespace=True) | Eine Teilmenge der Konfiguration mit einem angegebenen Präfix abrufen. Zum Beispiel ruft get_namespace("DB_") die gesamte Datenbankkonfiguration ab. |
Vergleich der Lademethoden
| Lademethoden | Anwendbare Szenarien | Beispiel |
|---|---|---|
| from_pyfile | Konfigurationsdateien liegen im Python-Format vor. | app.config.from_pyfile("config.py") |
| from_object | Verwenden Sie Klassen oder Module, um die Konfiguration zu organisieren und zwischen Umgebungen zu unterscheiden. | app.config.from_object("myapp.config.ProductionConfig") |
| from_prefixed_env | 12-Factor App, Konfiguration über Umgebungsvariablen. | app.config.from_prefixed_env() |
| from_file | JSON, TOML und andere Nicht-Python-Formate | app.config.from_file("config.json", load=json.load) |
| get_namespace | Extrahieren Sie die Teilmenge der Konfiguration und übergeben Sie sie an den Konstruktor der Bibliothek. | db_config = app.config.get_namespace("DB_") |
Benennungsregeln für Konfigurationsschlüssel
Namen von KonfigurationsschlüsselnMüssen vollständig in Großbuchstaben seinDies ist eine Flask-Konvention; Methoden wie from_object, from_mapping und from_prefixed_env ignorieren automatisch Schlüssel in Kleinbuchstaben.
Codebeispiele
Beispiel
from flask import Flask
app = Flask(__name__)
# Methode 1: Aus Python-Datei laden
app.config.from_pyfile("config.py")
# Methode 2: Aus Umgebungsvariablen laden (FLASK_-Präfix lesen)
app.config.from_prefixed_env()
# Methode 3: Direkt festlegen
app.config["MY_SETTING"] = "value"
# Methode 4: Aus JSON laden
import json
app.config.from_file("config.json", load=json.load)
# Methode 5: Namespace-Konfiguration abrufen
# Angenommen, es gibt Konfigurationen wie DB_HOST, DB_PORT, DB_NAME
db_config = app.config.get_namespace("DB_")
# db_config = {"host": "...", "port": ..., "name": "..."}
app = Flask(__name__)
# Methode 1: Aus Python-Datei laden
app.config.from_pyfile("config.py")
# Methode 2: Aus Umgebungsvariablen laden (FLASK_-Präfix lesen)
app.config.from_prefixed_env()
# Methode 3: Direkt festlegen
app.config["MY_SETTING"] = "value"
# Methode 4: Aus JSON laden
import json
app.config.from_file("config.json", load=json.load)
# Methode 5: Namespace-Konfiguration abrufen
# Angenommen, es gibt Konfigurationen wie DB_HOST, DB_PORT, DB_NAME
db_config = app.config.get_namespace("DB_")
# db_config = {"host": "...", "port": ..., "name": "..."}