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

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

description

 

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

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

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

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

Об авторе

Python

Javascript

Web

Networking

Егор Назаркин

Wargaming.net

Twitter: @nimnull

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

В тени django

ORM, templating, project layout, etc.

VS

DIY (+API)

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

Начало

1. Werkzeug

2. Jinja2

3. Выбрать компоненты

4. Понять app_context и request_context

›❯ pip search flask | wc -l 451[ ]

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

Например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, гордость и предубеждение

Первые проблемы

зависимости версий

Flask-Social => Flask-Security => Flask-Principal => Flask-Login

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

Структура проекта

• эволюция от app.py до factory.py (flask-kit)

• Борьба с циклическими импортами

• ext.init_app(…)

• app.register_blueprint(…)

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

Пара костылей• extensions.py должен быть доступен для импорта

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

Проблемы с контекстом

нет контекста при импорте?

— from werkzeug.local import LocalProxy

всё надоело?

— from werkzeug.utils import import_string

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

Лень• class LazyView

• class LazyResource

• class LazyBlueprint

— Двигатель прогресса

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

Адаптация• CRUDMixin (AR-like стиль для моделей)

• https://github.com/nimnull/flamaster, например

• sqlamp:

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

Компоновка• Как “правильно” организовать проект?

• Multiple Application — отлично (если есть multi-domain)

• Разделить на blueprint-ы, почему не flask-extensions?

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

Тестирование• Flask-Testing, Flask-Test — хорошая попытка

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

Celery

• Концепция контекста приложения

• для запуска нужен контекст приложения Flask (:

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

Celery

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

Celery

Имеет смысл переделать

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

Вопросы?

!

!

!

!

Да, заставляют играть в танки