Я исследовал различные (а их много) способы иметь несколько сайтов в рамках одной структуры Django.
Я все еще не вижу решения, которое хорошо подходит для моего варианта использования. Вариант использования:
- Единая база данных, так как большая часть данных (95%+) будет совместно использоваться двумя приложениями.
- Два разных типа пользователей, каждый из которых входит в систему через разные домены и фактически по-разному взаимодействует с одними и теми же необработанными данными.
Чего я хочу добиться, так это:
Когда посетитель заходит на сайт example.com, действуют настройки SITE_ID = 1.
Когда посетитель заходит на training.example.com, действуют настройки для SITE_ID = 2.
Я хочу сделать это, потому что:
- Я хочу использовать явно разные объекты UserProfile для разных пользователей.
- Я хочу смешивать и сопоставлять представления и приложения по своему желанию между разными доменами
Документация Django по платформе Sites, похоже, мне не помогает, хотя в этой и некоторых других статьях я вижу несколько возможностей.
В настоящее время я думаю решить эту проблему с помощью сервера wsgi (в моем случае uWSGI), где я бы взял wsgi.py по умолчанию Django, продублировал его, и каждая конфигурация wsgi будет иметь свой собственный файл settings.py Django.
Тогда сервер фактически будет обслуживать два разных приложения wsgi, даже если они используют большую часть одного и того же кода.
Итак, в этом сценарии мой проект Django будет иметь:
- example.com.settings.py (SITE_ID = 1)
- training.example.com.settings.py (SITE_ID = 2)
- example.com.wsgi.py (использует example.com.settings.py)
- training.example.com.wsgi.py (использует training.example.com.settings.py)
Мой сценарий здесь должен работать, но это будет в два раза больше памяти, чем решение этого в одном и том же экземпляре Django.
Любая лучшая реализация для того, что мне нужно достичь?