Study
Flask

Application Factory & Config

Penjelasan

Menulis app = Flask(__name__) langsung di level modul (seperti contoh-contoh sebelumnya) bekerja baik untuk belajar, tapi bermasalah saat aplikasi butuh beberapa konfigurasi berbeda — misalnya environment development, testing, dan production dengan database berbeda-beda. Application Factory Pattern membungkus pembuatan app di dalam fungsi create_app(config_class), sehingga kamu bisa membuat instance app baru dengan konfigurasi berbeda kapan saja, termasuk saat testing (biasanya butuh instance app terpisah per test). Config biasanya ditulis sebagai class Python terpisah (DevelopmentConfig, TestingConfig, ProductionConfig) yang di-load lewat app.config.from_object().

Contoh Konsep

# config.py
class Config:
    SECRET_KEY = 'default-secret'

class DevelopmentConfig(Config):
    DEBUG = True
    SQLALCHEMY_DATABASE_URI = 'sqlite:///dev.db'

class TestingConfig(Config):
    TESTING = True
    SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:'

# app.py
from flask import Flask
from config import DevelopmentConfig

def create_app(config_class=DevelopmentConfig):
    app = Flask(__name__)
    app.config.from_object(config_class)

    from blueprints.admin import admin_bp
    app.register_blueprint(admin_bp)

    return app

Praktikum

Lengkapi fungsi create_app agar menerima config_class dan menerapkannya ke aplikasi.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Dengan application factory, entry point run.py cukup berisi 'from app import create_app; app = create_app()' — pemisahan ini membuat aplikasi jauh lebih mudah diuji dan di-deploy dengan konfigurasi berbeda.