Разные файлы settings.py для разных доменов в Django - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть проект Django, который будет иметь несколько экземпляров, по одному для каждого из моих клиентов, каждый экземпляр имеет свою собственную БД и несколько пользовательских приложений и свой собственный домен, но все они используют один и тот же исходный код, единственное отличие будетФайл settings.py указывает на правильную базу данных.

Я знаю, что могу добиться этого, используя разные виртуальные хосты, указывающие на разные настройки, например, для Apache и WSGI, но в моем случае я буду использовать AWS Lambda и Zappa для обеспеченияэтот сервис для моих клиентов.

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

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Поскольку вы сказали, что у вас будет несколько экземпляров, я предполагаю, что это означает один клиент = одна лямбда .Вы можете использовать функцию Zappa для развертывания в нескольких средах с одной основной конфигурацией Zappa, которую вы собираетесь расширить.В каждой среде депиляции вы можете установить определенный файл настроек django, который будет использоваться.

zappa_settings.json

{
    "common": {
        "aws_region": "eu-central-1",
        "profile_name": "default",
        "project_name": "zappa3",
        "runtime": "python3.6",
        "s3_bucket": "zappa-ewdnqwii5"
    },
    "client_1": {
        "extends": "common",
        "django_settings": "zappa3.settings.client_1",
        "domain": "client-1.com"
    },
    "client_2": {
        "extends": "common",
        "django_settings": "zappa3.settings.client_1",
        "domain": "client-2.com"
    }
}
0 голосов
/ 28 февраля 2019

Вы можете преобразовать файл settings.py в папку настроек и создать столько настроек домена, сколько хотите добавить.Я бы создал base.py для общих настроек, а затем каждый домен, имеющий определенные настройки, должен импортировать base.py и дополнительные настройки, специфичные для домена.

Структура каталогов будет:

  • настройки:

    • base.py
    • domain_1.py
    • domain_2.py
    • ...

Когда вы загружаете domain_1, попробуйте загрузить, используя python manage.py runserver --settings=settings.domain_1.py, и request.meta['HTTP_HOST'] может дать вам доменное имя.

...