Flask
гордость и предубеждение
Об авторе
Python
Javascript
Web
Networking
Егор Назаркин
Wargaming.net
Twitter: @nimnull
В тени django
ORM, templating, project layout, etc.
VS
DIY (+API)
Начало
1. Werkzeug
2. Jinja2
3. Выбрать компоненты
4. Понять app_context и request_context
›❯ pip search flask | wc -l	
451[ ]
Например
Flask-And-Redis
Flask-Babel
Flask-Cache
Flask-ElasticSearch
Flask-Login
Flask-Mail
Flask-OAuth
Flask-Principal
Flask-S3
Flask-SQLAlchemy
Flask-Script
Flask-Security
Flask-Social
Flask-WTF
Первые проблемы
зависимости версий
Flask-Social => Flask-Security => Flask-Principal =>
Flask-Login
Структура проекта
• эволюция от app.py до factory.py (flask-kit)
• Борьба с циклическими импортами
• ext.init_app(…)
• app.register_blueprint(…)
Пара костылей
• extensions.py должен быть доступен для импорта
Проблемы с контекстом
нет контекста при импорте?
— from werkzeug.local import LocalProxy
всё надоело?
— from werkzeug.utils import import_string
Лень
• class LazyView
• class LazyResource
• class LazyBlueprint
— Двигатель прогресса
Адаптация
• CRUDMixin (AR-like стиль для моделей)
• https://github.com/nimnull/flamaster, например
• sqlamp:
Компоновка
• Как “правильно” организовать проект?
• Multiple Application — отлично (если есть multi-
domain)
• Разделить на blueprint-ы, почему не flask-
extensions?
Тестирование
• Flask-Testing, Flask-Test — хорошая попытка
Celery
• Концепция контекста приложения
• для запуска нужен контекст приложения Flask (:
Celery
Celery
Имеет смысл переделать
Вопросы?
!
!
!
!
Да, заставляют играть в танки

Flask, гордость и предубеждение