У Django на самом деле есть три понятия:
Проект (я думаю, это то, что вы называете сайтом): это каталог, который содержит все приложения. Они имеют общий вызов времени выполнения и могут ссылаться друг на друга.
Приложение : это набор видов, моделей и шаблонов. Приложения часто разрабатываются таким образом, чтобы их можно было подключить к другому проекту.
Сайт : вы можете назначить другое поведение для приложения в зависимости от посещаемого сайта (например, URL). Таким образом, одно и то же «приложение» может настроить себя в зависимости от того, посетил ли пользователь «StackOverflow.com» или «RackOverflow.com» (или как там будет называться версия, ориентированная на ИТ), даже если это одна и та же база кода это обрабатывает запрос.
Как вы это устроите, действительно зависит от вашего проекта. В сложном случае вы можете сделать:
Project: StackOverflowProject
App: Web Version
Site: StackOverflow.com
Site: RackOverflow.com
App: XML API Version
Site: StackOverflow.com
Site: RackOverflow.com
Common non-app settings, libraries, auth, etc
Или, для более простого проекта, который хочет использовать плагин с открытым исходным кодом:
Project: StackOverflowProject
App: Stackoverflow
(No specific use of the sites feature... it's just one site)
App: Plug-in TinyMCE editor with image upload
(No specific use of the sites feature)
Помимо того, что должен быть проект и хотя бы одно приложение, договоренность очень гибкая; однако вы можете адаптировать его так, как вам удобно, чтобы абстрагироваться и управлять сложностью (или простотой) развертывания.