Как подойти к реализации mutiple-сайтов внутри приложения django? - PullRequest
2 голосов
/ 18 марта 2011

Требование: включить один экземпляр вашего приложения Django для обслуживания нескольких клиентов.Под клиентом мы можем понимать разные домены или разные учетные записи, которые не должны иметь доступ к данным друг друга.

Предполагаемое количество клиентов составляет около сотен.

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

  1. Один из них - использовать каркас сайтов *1013* в Django и одну базу данных и добавить site_id для большинства моделей (звучит страшно)
  2. Использование одной базы данных для модуля аутентификации и сайтов и использование функции multi-database для хранения данных о клиентских моделях в отдельной базе данных.Это меня тоже пугает, потому что я должен реализовать динамическое создание базы данных для новых клиентов и, что еще хуже, я не знаю, как обрабатывать миграцию базы данных при обновлении приложения.

Какой ваш рекомендуемый подход к этому?1022 *

1 Ответ

0 голосов
/ 19 марта 2011

Если у вас может быть несколько экземпляров одного и того же приложения с разными SITE_ID для каждого сайта, тогда это будет предпочтительным вариантом.Таким образом, вы можете использовать разные базы данных для каждого сайта или надежно использовать структуру сайтов Django.

Это возможно, если вы хотите, чтобы один процесс или несколько процессов обслуживали сотни сайтов, однако они изгибаютсятекущий дизайн Джанго.Использование Site.objects.get_current() зависит от SITE_ID, поэтому вам нужно будет использовать что-то еще для определения текущего сайта.

Один пакет, который предлагает необходимую вам функциональность, - django-threadaded-multihost , вы можете использовать get_current_host для каждого запроса, чтобы получить другой сайт.

Единственным недостатком является то, что любые приложения Django, которые используют Site.objects.get_current(), нуждаются в модификации с такой настройкой, что затрудняетиспользовать некоторые подключаемые приложения неудобно для использования - вам придется либо обезопасить их от патчей, либо придерживаться приложений, которые вы сами создали для использования в многопоточном многопоточном режиме.

Итак, это возможно, но это просто не так.С Джанго сейчас все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...