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

Preview:

DESCRIPTION

 

Citation preview

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

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

Вопросы?

!

!

!

!

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

Recommended