Использование SQLAlchemy в django
Для начала вставал вопрос как избавится от django ORM, но он отпал как только столкнулся с сессиями. Поэтому было решено оставить в подключаемых приложениях только django.contrib.sessions.
*PLACEHOLDERS_PRE_2*
Был создан класс для создания сессий базы данных.
*PLACEHOLDERS_PRE_3*
Для создания таблиц решили использовать пакет sqlalchemy-migrate. Так как использовать syncdb мы не будем, через мигрейты создаем таблицу django_session и таблицу users.
*PLACEHOLDERS_PRE_4*
Общая структура приложения выглядит следующим образом.
*PLACEHOLDERS_PRE_5*
Заметим что в models у нас нет ни слова о моделях django зато есть наш класс User, в котором есть все нам необходимое для авторизации.
*PLACEHOLDERS_PRE_6*
Мы недолго спорили, где должен располагаться метод создания пользователя и пришли к выводу, что он будет статик-методом в самом классе User.
*PLACEHOLDERS_PRE_7*
Метод save сделаем комит в базу данных если произошли изменения в нашем классе, изменился ли username или password. Джанго даже не подозревает, как мы ее надули этим самым и установит поле last_login при авторизации пользователя.
Чем подобный подход хорош, мне кажется он более логичен.
— Определение таблиц располагается в файле db.py;
— Наши классы содержат строго определенные нами методы и ничего лишнего, а с таблицей он связывается через mapper;
— Нет ужасных менеджеров, которые на мой взгляд абсолютно бесполезны.
Все про українське ІТ в телеграмі — підписуйтеся на канал DOU
35 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.