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.
Uygulamada üç ana alt sistem bulunuyor, ancak bunların kodu birbirine karışmış durumda:
Sorunlar: yeniden kullanım zor, test etmek güç, global app değişkeni test senaryolarını kısıtlıyor.
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.
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: