Одна установка, несколько доменов и приложений? - PullRequest
6 голосов
/ 11 марта 2011

Я планирую использовать Django для многосайтового проекта, где каждый сайт в основном независим, но поделится несколькими моделями на всех сайтах.

Мне интересно, есть ли способ сделать каждое приложение «Django» своим собственным сайтом с уникальным доменным именем и разрешить каждому сайту доступ к общему приложению, которое содержит некоторые модели для учетных записей пользователей, профилей и т. Д.

План состоит в том, чтобы разрешить единый вход на каждый сайт, обмен информацией об учетной записи через общее приложение и создание файлов cookie для каждого сайта после входа пользователя.

Я знаю, что в Django есть функция «сайты», но я не уверен, достаточно ли она надежна для моих нужд.

Кто-нибудь может порекомендовать способ сделать это или указать мне на какие-нибудь статьи, которые могут помочь?

UPDATE

Просто интересно, будет ли возможно с помощью apache и, возможно, некоторой модификации urls.py уметь указывать определенный домен на структуру url?

например, предположим, что основным сайтом является mainsite.com, и я хочу, чтобы один из других доменов указывал на mainsite.com/secondarysite, где secondarysite - это приложение django в том же экземпляре, и чтобы apache маскировал тот факт, что домен secondarysite.com фактически указывает на другое местоположение?

Ответы [ 3 ]

6 голосов
/ 28 марта 2011

Re.ваше обновление: вам не нужно подделывать структуру URL-адреса подобным образом, если только вы не хотите, чтобы URL-адреса, такие как mainsite.com/secondarysite, были непосредственно доступны пользователю.

Я предполагаю, что вы используете виртуальный хостинг на основе имени .Один простой, но очень гибкий подход заключается в том, чтобы каждая директива вызывала другой сценарий wsgi через обычные директивы конфигурации mod_wsgi , а затем каждый сценарий wsgi может установить os.environ['DJANGO_SETTINGS_MODULE'], указывая на отдельный файл настроек.

Каждый из этих файлов настроек может иметь свой ROOT_URLCONF, так что вы можете настроить представления по разным путям, если вам нужно.Используйте механизм include.

Если вы хотите, чтобы оба домена использовали для всех одну и ту же базу данных, просто попросите оба файла настроек загрузить конфигурацию базы данных из третьего файла, например.settings_shared.py.Или, если вы хотите направить некоторые модели в общую базу данных, а другие нет, это тоже возможно .Легко представить, как это можно настроить для каждого домена:

from settings_shared import DATABASES_SHARED
DATABASES = DATABASES_SHARED.copy()
DATABASES.update({ ... })

Этот подход позволяет настроить URL-адреса и базы данных для каждого домена.Но это не заботится о единой регистрации.

Для части единого входа действительно зависит, какой пользовательский опыт вы хотите и сколько времени у вас есть;)

Попробуйте поискать "django sso".Здесь есть много важных вопросов, например: Реализация единого входа (SSO) с использованием Django , Как создать безопасный единый вход Django между различными сайтами? , Django+ Google SSO openid , Интеграция приложений Django и .Net с помощью единого входа (SSO) , (Django) Совместное использование аутентификации между двумя сайтами, которые находятся в разных доменах

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

Вы можете рассмотреть OpenID .

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

Я думаю этот парень говорит об этом.

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