Ответ 1
существует несколько различных вариантов управления различными веб-сайтами (и, следовательно, шаблонами и содержимым страницы) в Django-cms.
Основной подход
Мой любимый, наверное, самый простой:
В моем virtualenv у меня есть единственная установка django-cms И один "проект", содержащий ВСЕ шаблоны, которые я использую.
У меня есть файл глобальных настроек плюс один для каждого веб-сайта, который только импортирует все глобальные настройки и устанавливает "SITE_ID".
from base import *
SITE_ID = XXX
Для структуры я обычно имею папку settings
, пустую __init__.py
внутри, a base.py
со всеми общими настройками, включая настройки django-cms, а затем различные веб-сайты, например. site1.py
site2.py
и т.д. (иногда моя структура даже немного сложнее, чтобы также учитывать dev/production, разные машины и т.д., но это не имеет значения здесь).
Я запускаю каждый веб-сайт как другой экземпляр - я использую gunicorn так, что очень просто, каждый из другого порта.
У меня есть nginx с отдельной конфигурацией server
для каждого из моих веб-сайтов, и каждый из этих пунктов относится к другому стрельбе.
server {
listen 80;
server_name example1.com www.example1.com;
...
location / {
proxy_pass http://localhost:PORT;
}
}
Любой из экземпляров gunicorn может получить доступ к администратору, и все данные будут совместно использоваться в одной базе данных, но для простоты
Что все!
Конечно, это можно сделать аналогично Apache, mod_wsgi и другим виртуальным хостам.
Дополнительно
Темы
Я фактически структурировал свои папки, чтобы иметь папку приложений под названием themes
. Каждая тема на самом деле является APP, хотя в основном содержит только папки templates
и static
, и она добавляется в INSTALLED_APPS.
Это позволяет использовать такие интересные вещи, как наследование и/или переопределение между различными темами.
Динамический SITE_ID
Также возможно использовать промежуточное программное обеспечение, которое будет динамически извлекать и устанавливать SITE_ID из URL-адреса. Это позволяет иметь один экземпляр... но я не вижу реального преимущества в этом решении и скорее считаю его потенциальным источником рисков.