У Django есть платформа сайтов для поддержки нескольких веб-хостинг от единственной установки Django.
РЕДАКТИРОВАНИЕ (ниже неправильное предположение о системе),
Я понимаю, что промежуточное программное обеспечение устанавливает настройки. SITE_ID оценивают на основе поиска/кэша домена запроса.
ENDEDIT
Но при тестировании локально, я по http://127.0.0.1:8000/, не http://my-actual-domain.com/
Как я локально просматриваю свои различные сайты во время разработки?
Создайте отдельный файл settings.py для каждого сайта, включая соответствующую настройку SITE_ID
. Конечно, вы можете использовать импорт
для совместного использования общих настроек между файлами.
Отныне при запуске сервера разработки 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/
С тех пор, как я задал вопрос, я наткнулся на эти посты:
Спирос Цавеллас говорит об использовании признака в качестве открытого интерфейса и типа себя в качестве помощника, который должен быть смешан классом реализации.
В заключение, если мы хотим двигаться реализации методов внутри признаков тогда мы рискуем загрязнить интерфейс из этих признаков абстрактными методами в поддержку осуществления конкретные методы и не связаны между собой с основной ответственностью черта. Решение этой проблемы: для перемещения этих абстрактных методов в другие признаки и составить признаки вместе с помощью аннотаций собственного типа и множественное наследование.
Например:
trait PublicInterface { this: HelperTrait =>
// Uses helperMethod
}
trait HelperTrait {
def helperMethod = // ...
}
class ImplementationClass extends PublicInterface with HelperTrait
Экскурсия по Scala обсуждает использование аннотаций собственного типа с элементами абстрактного типа - предположительно, невозможно расширить
член абстрактного типа (?)
Я написал сценарий для этого немного назад. Вы можете найти его здесь: https://gist.github.com/dound/76ea685c05c4a7895247457eb676fe69
(исходная запись, которую можно просмотреть из archive.org: https://web.archive.org/web/20160208235904/http ://dound.com: 80/2009/04/git-forever-remove-files-or-folders-from-history/)
Сценарий построен на инструменте git-filter-branch , который поставляется с git. Если вам интересно, вы можете прочитать больше об удалении файлов из гит репо здесь , но использование скрипта из ссылки выше должно быть легким и все, что вам действительно нужно для удаления этой частной информации.
-121--2730561-Возможно, документация вводит вас в заблуждение. Вы написали:
Я понимаю, что промежуточное ПО задает настройки. SITE_ID значение на основе поиска/кэша домена запроса.
Это не так. Это работает именно наоборот. Джанго использует настройки. SITE_ID значение для поиска правильного объекта Site в базе данных. Это возвращает предпочитаемый домен и имя сайта.
Приложение sites
было разработано для заполнения (на мой взгляд) редкой базы данных, в которой требуется иметь несколько сайтов с одной базой данных в фоновом режиме. Это позволяет публиковать одни и те же статьи на разных сайтах, но при этом обладает той гибкостью, что некоторые модели доступны только для одного сайта.
Для разработки нескольких проектов (которые фактически не используют инфраструктуру сайтов) не нужно указывать ничего особенного. Можно использовать значение по умолчанию SITE _ ID
, равное 1
. Для использования представления администратора на веб-сайте можно установить в базе данных разработки домен сайта
на localhost: 8000
.
Если требуется разработать несколько сайтов с использованием одной и той же базы данных (и использовать инфраструктуру сайтов), необходимо иметь каждый проект с определенным SITE _ ID
, но одинаковыми параметрами базы данных.Значения САЙТОВ _ ID
в каждом проекте на компьютере разработки в большинстве случаев совпадают с значениями для производственных серверов.