Ваша лучшая ставка здесь - это, вероятно, уникальный файл 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 сайтов, вероятно, хорошо, но гораздо больше будет раздражать), то вы можете написать команду управления для генерации всех файлов.