2010-02-08 3 views
9

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

EDIT (ниже это неверное предположение системы)


Я понимаю, что промежуточный слой устанавливает значение параметра конфигурации, основанное на перекодировках/кэше домена запроса.


EndEdit

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

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

+0

Ссылка истекли в настоящее время. Пожалуйста, исправьте это. –

ответ

17

Создайте отдельный файл 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

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

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

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

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

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

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

+0

Спасибо, Грегор. Я подозреваю, что сильно заблуждаюсь. Я, скорее всего, создаю промежуточное программное обеспечение, чтобы выполнить то, что я, хотя Django уже делал, и он ищет атрибут строки запроса «site = my-site-1.com», когда запрашиваемый домен находится в настройках. DVELVELMENT_SERVERS, например: , если запрос .META ['SERVER_NAME'] в настройках.DEVELOPMENT_SERVERS: #do найти и установить сайт в сеансе –

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