Votre meilleur pari ici est probablement un fichier settings.py et urls.py unique pour chaque domaine.
Vous disposez d'un fichier de paramètres principal contenant tous vos paramètres communs, puis d'un fichier de paramètres par site qui importe tout ce qui est commun et remplace le paramètre ROOT_URLCONF.
Vous pouvez disposer vos paramètres quelque chose comme ceci:
- configs
-- settings.py
-- site1
--- settings.py
--- urls.py
-- site2
--- settings.py
--- urls.py
...
Puis, dans chacun de vos paramètres du site les fichiers que vous feriez quelque chose comme:
from projectname.configs.settings import *
ROOT_URLCONF = 'projectname.configs.site1.urls'
En supposant que vous utilisez mod_wsgi sur apache alors vous feriez quelque chose comme ça dans chaque fichier wsgi, en pointant sur le module de paramètres pertinent pour ce site
os.environ["DJANGO_SETTINGS_MODULE"] = "projectname.configs.site1.settings"
Cette approche vous permet également de tirer parti de la structure des sites django assez facilement, en spécifiant un SITE_ID unque dans chaque fichier de paramètres.
La seule vraie astuce pour obtenir ce droit est de savoir comment gérer le chemin Python pour que toutes les importations fonctionnent. Si vous n'aimez pas avoir à créer manuellement beaucoup de fichiers (5-10 sites sont probablement très bien, mais beaucoup plus serait ennuyeux) alors vous pouvez écrire une commande de gestion pour générer tous les fichiers.