📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials Flask Web Framework Flask Config

Flask Config

5 min read
Manage dev/test/prod configs using Config classes and .env loading with python-dotenv.

Configuration

# config.py
import os
from dotenv import load_dotenv
load_dotenv()

class Config:
    SECRET_KEY           = os.environ.get("SECRET_KEY") or "dev-secret"
    SQLALCHEMY_DATABASE_URI = os.environ.get("DATABASE_URL") or "sqlite:///app.db"
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    MAIL_SERVER   = os.environ.get("MAIL_SERVER")
    MAIL_PORT     = int(os.environ.get("MAIL_PORT") or 587)

class DevelopmentConfig(Config):
    DEBUG = True

class TestingConfig(Config):
    TESTING             = True
    SQLALCHEMY_DATABASE_URI = "sqlite:///:memory:"
    WTF_CSRF_ENABLED    = False

class ProductionConfig(Config):
    DEBUG = False

config = {
    "development": DevelopmentConfig,
    "testing":     TestingConfig,
    "production":  ProductionConfig,
    "default":     DevelopmentConfig,
}

# Use
app.config.from_object(config["production"])