Как в проекте django использовать несколько баз данных с одинаковой структурой для чтения и записи, различающихся по url

У меня есть проект django, и я хочу разделить его на несколько баз данных с одинаковой структурой.

Используйте url для различения разных баз данных. При входе на страницу управления администратора входите в разные базы данных по разным url.

Например: 127.0.0.1/admin использует базу данных admin, 127.0.0.1/admin2 использует базу данных admin2.

Реализует ли django эту функцию? Что мне нужно сделать, Можете ли вы дать мне несколько предложений или идей? Большое спасибо

TL;DR. Поскольку рассматривается один проект django, нет стандартного способа достижения множественной базы данных.

Сценарий 1

Из вашего очень ограниченного объяснения я предположу, что вы хотите отделить данные одной панели администратора от данных второй панели администратора, чтобы достичь изоляции данных в отношении разрешений и других моделей, это называется мультитенансией.

Очень кратко: В многоарендной архитектуре вы можете иметь несколько арендаторов, структура которых определяется вашим models.py, и вы можете контролировать всех этих арендаторов через главного суперадмина, эти арендаторы могут иметь свою собственную панель администратора, где данные, хранящиеся в них, являются специфическими только для пользователей этих арендаторов. Говоря более простым языком, вы можете создать SaaS приложение с помощью этого метода, где у вас может быть несколько организаций, и эти организации имеют своих собственных пользователей с определенными правами/группами.

Мультидоменность может быть достигнута в django с помощью базы данных, разделенной схемой, используя POSTGRESql и этот удивительный пакет , который уже сделал большую часть тяжелой работы за вас. Вы можете получить отдельные логины через url или поддомен. Если у ваших арендаторов есть пользователи, принадлежащие к нескольким организациям, и вы хотите иметь единый логин для всех них, то вы можете использовать этот пакет, который идет вместе с django-tenants. Он предоставляет публичную таблицу пользователей с модулями разрешений, отдельными для каждого арендатора.

Сценарий 2

Из вашего очень ограниченного объяснения я предположу, что вы все еще хотите отдельные базы данных для вашего приложения, в таком случае вам нужно переосмыслить ваш подход к проблеме, потому что это не то, что вы будете фантазировать после развертывания, поскольку нет прямого пути, предоставляемого django. Вместо этого вам следует рассмотреть микросервисную архитектуру.

Вернуться на верх