Giriş


Bu bölümde uygulama büyük projeler için uygun bir yapıya kavuşturuluyor. İki temel iyileştirme yapılıyor: Blueprint (plan) sistemi ile kodun alt sistemlere bölünmesi ve Application Factory (uygulama fabrikası) kalıbıyla global uygulama değişkeninden kurtulma.


Mevcut Yapının Sorunları

Uygulamada üç ana alt sistem bulunuyor, ancak bunların kodu birbirine karışmış durumda:

  1. Kimlik doğrulama (auth) — view fonksiyonları, formlar, e-posta desteği
  2. Hata yönetimi (errors) — error handler'lar, hata şablonları
  3. Ana uygulama (main) — blog gönderileri, profiller, takip, çeviri

Sorunlar: yeniden kullanım zor, test etmek güç, global app değişkeni test senaryolarını kısıtlıyor.


Blueprint'ler

Flask'ta blueprint, bir uygulamanın mantıksal bir alt kümesini temsil eden yapıdır. Route'lar, view fonksiyonları, formlar, şablonlar ve statik dosyalar içerebilir. Blueprint kayıt edilene kadar "uykuda" kalır; kayıt anında tüm elemanlar uygulamaya bağlanır.

1. Error Blueprint

Yeni yapı:

app/ errors/ init.py ← blueprint oluşturma handlers.py ← hata handler'ları templates/ errors/ 404.html 500.html


**`app/errors/__init__.py`:**

```python
from flask import Blueprint

bp = Blueprint('errors', __name__)

from app.errors import handlers

app/errors/handlers.py içinde @app.errorhandler yerine @bp.app_errorhandler kullanılır:

@bp.app_errorhandler(404)
def not_found_error(error):
    return render_template('errors/404.html'), 404

@bp.app_errorhandler(500)
def internal_error(error):
    db.session.rollback()
    return render_template('errors/500.html'), 500

app/__init__.py'ye kayıt: