Вы смотрели на django.contrib.sites
?Я думаю, что комбинация этого, установка SITE_ID
в вашем settings.py
и наличие одного WSGI-файла на «сайт», может позаботиться обо всем.
РЕДАКТИРОВАТЬ: -v
set.
django.contrib.sites позволяет вам запускать несколько сайтов из одного проекта и базы данных Django.Он добавляет таблицу (django.contrib.sites.models.Site
) с полями domain
и name
.Из того, что я могу сказать, name
может означать все, что вы хотите, но обычно это английское название сайта.domain
- это то, что должно отображаться в основной части URL.
SITE_ID
устанавливается в settings.py
на id
обслуживаемого сайта.В исходном файле settings.py
он равен 1 (без комментариев).Вы можете заменить это любым кодом, который вам нужен, чтобы установить правильное значение.
Очевидная вещь, которую нужно сделать, это проверить переменную окружения и найти ее в поле name
или domain
.в таблице Site
, но я не уверен, что это будет работать из файла settings.py
, так как этот файл устанавливает параметры подключения к базе данных (круговая зависимость?).Поэтому вам, вероятно, придется согласиться на что-то вроде:
SITE_ID = int(os.environ.get('SITE_ID', 1)
Затем в своем файле WSGI вы делаете что-то вроде:
os.environ['SITE_ID'] = 2
и устанавливаете это последнее число на соответствующее значение,Вам понадобится один файл WSGI для каждого сайта, или, возможно, есть способ установить SITE_ID в настройках Apache.Какой путь выбрать, зависит от настройки сайта.
Каркас сайтов наиболее эффективен, когда вы используете Site
в качестве цели ForeignKey
или ManyToManyField
, так что вы можете связать экземпляры модели(т.е. записи) на конкретные сайты.