2014-02-19 2 views
0

Я хочу иметь 2 отдельных сайтов:Джанго мультисайтов для местного развития, консультации по вопросам структуры и процесса

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

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

Я проверил многопоточную документацию, но мне трудно понять, как это относится к моим потребностям.

Спасибо заранее,

+0

Ну, вы действительно ищете многоязычный Django, назначаете контент на сайт и запрашиваете на основе текущего рабочего сайта. Есть много примеров, которые могут быть скорректированы с учетом ваших потребностей: http://www.two-legs.com/2011/08/creating-a-dynamic-multisite-using-django/ – petkostas

ответ

2

У вас есть куча возможностей, чтобы solche ваших проблемы - разделение кода/модель не является самой большой проблемой, так как, если вы упаковать их в некоторых многоразовых приложениях, которые вы должны быть в состоянии использовать их в разных проектах.

  • Использование Django's Sites framework: Так как сайты будут в основном работать с тем же кодом, использовать ту же базу данных. Объекты контента будут иметь ForeignKey pointing to a Site. Это хорошо работает, если ваши сайты имеют точно такую ​​же функциональность, может быть, только другой дизайн. Если вам нужно будет копать глубже в коде Python, чтобы настроить один сайт, это, вероятно, не самая лучшая альтернатива.

  • Вы можете найти решение с базой данных для пользователей и по одному для каждого сайта и обмениваться пользователями с помощью DB routers. Основным недостатком этого является то, что пользовательские данные и другие данные живут в отдельных базах данных, то есть вы не можете выполнять JOINs или что-то в этом роде. (Это отделит ваши данные очень чисто, не нужно фильтровать, если какой-либо контент принадлежит сайту или нет)

  • Напишите свой собственный authentication backend, чтобы каждый проект не аутентифицировал пользователя в отношении собственной базы данных, а против некоторых внешняя служба.

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

Чтобы настроить это решение, вам необходимо иметь отдельный файл настроек для каждого сайта (вам нужно как минимум установить SITE_ID на сайт). Кроме того, вы можете указать дополнительные параметры, такие как разные папки шаблонов и т. Д. Отдельно для каждого сайта.

settings 
    __init__.py 
    base.py 
    site_a.py 


# site_a.py 
from base import * 
SITE_ID = 1 
# eg different templates for this site 
TEMPLATE_DIRS = (('site_a/templates/'),) 

Сервер разработки, который вы можете запустить, затем с manage.py --settings settings.site_a. Вы можете, например. также используйте разные urls.py на сайт, если вы укажете его в настройках. В процессе производства вам нужно иметь два экземпляра, один с настройками для каждого сайта и, например. иметь обратный прокси-сервер, отправляющий запросы в нужный экземпляр.

+0

Привет, спасибо за комментарий, М больше интересовался тем, как его настроить. Например, urls.conf - как сопоставить каждый сайт с правильными шаблонами, где хранить шаблоны различий, создаю ли я 2x settings.py файлы. – rix

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