Flask, гордость и предубеждение
-
Upload
yehor-nazarkin -
Category
Technology
-
view
562 -
download
7
description
Transcript of Flask, гордость и предубеждение
![Page 1: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/1.jpg)
Flaskгордость и предубеждение
![Page 2: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/2.jpg)
Об авторе
Python
Javascript
Web
Networking
Егор Назаркин
Wargaming.net
Twitter: @nimnull
![Page 3: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/3.jpg)
В тени django
ORM, templating, project layout, etc.
VS
DIY (+API)
![Page 4: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/4.jpg)
Начало
1. Werkzeug
2. Jinja2
3. Выбрать компоненты
4. Понять app_context и request_context
›❯ pip search flask | wc -l 451[ ]
![Page 5: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/5.jpg)
Например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
![Page 6: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/6.jpg)
Первые проблемы
зависимости версий
Flask-Social => Flask-Security => Flask-Principal => Flask-Login
![Page 7: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/7.jpg)
Структура проекта
• эволюция от app.py до factory.py (flask-kit)
• Борьба с циклическими импортами
• ext.init_app(…)
• app.register_blueprint(…)
![Page 8: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/8.jpg)
Пара костылей• extensions.py должен быть доступен для импорта
![Page 9: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/9.jpg)
Проблемы с контекстом
нет контекста при импорте?
— from werkzeug.local import LocalProxy
всё надоело?
— from werkzeug.utils import import_string
![Page 10: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/10.jpg)
Лень• class LazyView
• class LazyResource
• class LazyBlueprint
— Двигатель прогресса
![Page 11: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/11.jpg)
Адаптация• CRUDMixin (AR-like стиль для моделей)
• https://github.com/nimnull/flamaster, например
• sqlamp:
![Page 12: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/12.jpg)
Компоновка• Как “правильно” организовать проект?
• Multiple Application — отлично (если есть multi-domain)
• Разделить на blueprint-ы, почему не flask-extensions?
![Page 13: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/13.jpg)
Тестирование• Flask-Testing, Flask-Test — хорошая попытка
![Page 14: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/14.jpg)
Celery
• Концепция контекста приложения
• для запуска нужен контекст приложения Flask (:
![Page 15: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/15.jpg)
Celery
![Page 16: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/16.jpg)
Celery
Имеет смысл переделать
![Page 17: Flask, гордость и предубеждение](https://reader034.fdocuments.net/reader034/viewer/2022050905/5483f320b4af9f870d8b4a32/html5/thumbnails/17.jpg)
Вопросы?
!
!
!
!
Да, заставляют играть в танки