2012-05-10 3 views
0

Как я могу получить несколько сайтов, похожих по функциональности, но различающихся по внешнему виду и контенту - все данные будут разными.Django несколько сайтов на одном экземпляре

Изменить SITE_ID на лету и написать собственный загрузчик шаблонов & static file finder (тот же URL/статический/для разных сайтов указывает на разные категории) и добавьте ForeignKey на сайт для всех?

или есть другие способы?

Спасибо!

ответ

1

Я сделал что-то похожее на себя.

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

Защиту getHost (запрос): вернуть request.META [ 'SERVER_NAME']

Тогда в зависимости от хозяина у меня есть мой статический реж разбивается на 2 участка статический/host1/ статический/host2/

и я делаю то же самое для шаблонов, которые я разделяю на 2 каталога и называю подходящим!

1

Это деликатная операция для разбиения сайта Django на том же экземпляре. Во-первых, вы должны иметь свои модели в виду. Как и FlatPages, ваши модели могут содержать таблицу ManyToManyField в таблице Sites, чтобы вы могли фильтровать контент в соответствии с текущим сайтом, если хотите.

О шаблонах и статических данных, мне нравится ответ Марка, но вы можете сделать это по-другому. Вы можете разделить свой шаблон и статические папки на несколько папок с различными темами и конфигурациями шаблонов. Например, вы можете иметь только один набор шаблонов, и две «темы», как это:

templates 
    /normal_set 
static 
    /themes 
     /blue 
     /red 

Вы можете создать таблицу Кальес SiteConfiguration с OneToOneField в таблице узлов. Эта таблица конфигурации будет содержать имя папки шаблона и имя папки темы для сайта, чтобы вы могли делиться свойствами между сайтами. Возможно, вы можете кэшировать это позже, чтобы часто не ударять по базе данных. Смешайте это предложение с Марком, может быть.

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

0

Есть 2 пакеты, предназначенные для этого точного случая использования:

для Django 1.8+, есть https://bitbucket.org/levit_scs/django-polla

Если вы используете старую версию Django, вы можете использовать https://bitbucket.org/uysrc/django-dynamicsites/overview

Даже хотя этот ответ довольно поздний, я надеюсь, что это может помочь людям, спотыкающимся по этому вопросу

 Смежные вопросы

  • Нет связанных вопросов^_^