Перенаправление / переадресация URL-адреса в приложение Django с использованием DNS или Apache - PullRequest
0 голосов
/ 26 марта 2010

Как правило, мне повезло иметь довольно простую конфигурацию Django и Apache.

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

Приложения размещены по адресу www.myserver.com/app/app1 (app2 ...), и я хотел бы получить к ним доступ через сайт www.someawesomedomain.com. Я не хочу перенаправления, так как я не хочу показывать основной путь.

Каков наилучший способ сделать это в контексте 5 - 10 сайтов?

Я использую Apache2.

1 Ответ

0 голосов
/ 28 марта 2010

Ваша лучшая ставка здесь - это, вероятно, уникальный файл settings.py и urls.py для каждого домена.

У вас будет основной файл настроек, в котором есть все ваши общие настройки, а затем файл настроек для сайта, который импортирует все из общего и переопределяет настройку ROOT_URLCONF.

Вы можете выложить свои настройки примерно так:

- configs
-- settings.py
-- site1
--- settings.py
--- urls.py
-- site2
--- settings.py
--- urls.py
...

Тогда в каждом из файлов настроек вашего сайта вы будете делать что-то вроде:

from projectname.configs.settings import *

ROOT_URLCONF = 'projectname.configs.site1.urls'

Предполагая, что вы используете mod_wsgi на apache, вы будете делать что-то подобное в каждом файле wsgi, указывая на соответствующий модуль настроек для этого сайта

os.environ["DJANGO_SETTINGS_MODULE"] = "projectname.configs.site1.settings"

Этот подход также позволяет довольно легко воспользоваться преимуществами инфраструктуры сайтов django, указав уникальный идентификатор SITE_ID в каждом файле настроек.

Единственный реальный трюк в получении этого права - это умение управлять путями Python, чтобы все операции импорта работали. Если вам не нравится создавать много файлов вручную (5-10 сайтов, вероятно, хорошо, но гораздо больше будет раздражать), то вы можете написать команду управления для генерации всех файлов.

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