Как локально протестировать структуру сайтов Django - PullRequest
9 голосов
/ 08 февраля 2010

Django имеет инфраструктуру сайтов для поддержки хостинга нескольких веб-сайтов из одной установки Django.

РЕДАКТИРОВАТЬ (ниже неверное предположение системы)


Я понимаю, что промежуточное ПО устанавливает значение settings.SITE_ID на основе поиска / кэша домена запроса.


EndEdit

Но при локальном тестировании я на http://127.0.0.1:8000/, не http://my -actual-domain.com /

Как локально просматривать разные сайты во время разработки?

Ответы [ 3 ]

18 голосов
/ 08 февраля 2010

Создайте отдельный файл settings.py для каждого сайта, включая соответствующие настройки SITE_ID. Конечно, вы можете использовать оператор import для совместного использования общих настроек между файлами.

С этого момента при запуске сервера разработки Django укажите параметр --settings, чтобы указать Django, какой сайт запускать.

Например (при условии, что у вас есть два файла настроек - settings_first.py и settings_second.py):

manage.py runserver --settings settings_first

запустит первый сайт, а

manage.py runserver --settings settings_second

даст вам доступ ко второму сайту.

Вы также можете запустить их одновременно, указав разные порты:

manage.py runserver 8001 --settings settings_first

manage.py runserver 8002 --settings settings_second

Приведенные выше команды (запускаемые на двух разных консолях) сделают первый веб-сайт доступным под http://127.0.0.1:8001/,, а второй - под http://127.0.0.1:8002/

3 голосов
/ 09 февраля 2010

Возможно, вас вводит в заблуждение документация. Вы написали:

Я понимаю, что промежуточное ПО устанавливает значение settings.SITE_ID на основе поиска / кэша домена запроса.

Это не тот случай. Это работает с точностью до наоборот. Django использует значение settings.SITE_ID для поиска правильного объекта Site в базе данных. Это возвращает ваш предпочтительный домен и имя сайта.

Приложение sites было разработано для того, чтобы заполнить (на мой взгляд) редкий случай использования, когда вы хотите иметь несколько сайтов с одной и той же базой данных в фоновом режиме. Это позволяет публиковать одни и те же статьи на разных сайтах, но при этом обладает той гибкостью, что некоторые модели доступны только для одного сайта.

Для разработки нескольких проектов (которые на самом деле не используют каркас сайтов) вам не нужно указывать ничего особенного. Вы можете использовать значение по умолчанию SITE_ID, установленное на 1. Для использования представления администратора на веб-сайте ссылок вы можете установить в своей базе данных для разработки домен Site на localhost:8000.

Если вы хотите разрабатывать несколько сайтов с использованием одной базы данных (и использовать платформу сайтов), у вас должен быть каждый проект с различными SITE_ID, но одинаковыми настройками базы данных. Значения SITE_ID в каждом проекте на вашей машине разработки в большинстве случаев такие же, как для ваших производственных серверов.

0 голосов
/ 24 марта 2011

К вашему сведению - сегодня я выпустил django-dynamicites, у которого есть возможности для решения этой проблемы - https://bitbucket.org/uysrc/django-dynamicsites/src

...