#python #django #wsgi #django-settings
#python #django #wsgi #django-настройки
Вопрос:
Я уже искал в Интернете по этому вопросу, но, похоже, они не применимы к моему случаю.
У меня есть 3 разных конфигурационных файла — Dev, Staging, Prod (конечно)
Я хочу правильно модулировать настройки без повторений. Итак, я сделал base_settings.py и я импортирую его в dev_settings.py , stg_settings.py и т. Д.
Проблема — Как правильно вызывать скрипты в каждой среде с минимальными изменениями?
Прямо сейчас я делаю это (взяв в качестве примера dev env)-
python manage.py runserver —настройки=core.dev_settings
Это работает до сих пор, но я не уверен, насколько это хороший обходной путь. Потому что wsgi.py и еще пара других сервисов имеют —
os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘core.settings’)
Я хочу что-то сделать, не изменяя конфигурационные файлы других сервисов. Заранее спасибо всем.
PS — Я старался быть как можно более понятным, но, пожалуйста, извините меня, если что-то неясно.
Ответ №1:
Просто установите DJANGO_SETTINGS_MODULE
в переменных среды желаемый конфигурационный файл.
Это не заставит вас изменять какие-либо другие файлы конфигурации служб, и вам даже не нужно изменять файлы настроек django.
Комментарии:
1. Спасибо за быстрый ответ! У меня есть небольшое сомнение в качестве дополнения к этому. Если я запускаю gunicorn вместо managy.py , как указать соответствующий файл настроек?
2. @NirlenduSaha да, если вы запустите его с помощью gunicorn, он будет использовать ваш файл .wsgi, а затем будет искать в
DJANGO_SETTINGS_MODULE
переменной среды, и если ее нет, она будет установленаcore.settings
для вашего примера.3. Я попробовал ваш подход. Экспортировал DJANGO_SETTINGS_MODULE=’core.settings.local’ echo $$DJANGO_SETTINGS_MODULE
4. Сделал это в makefile, но, как ни странно, он там не установлен. Но если я сделаю это в cmd отдельно, проблем не будет. Вы знаете, как / почему это происходит? На всякий случай я использую mac.
5. @NirlenduSaha Убедитесь, что эта переменная среды должна быть установлена при перезапуске вашего сервера. Это тот же подход к настройке
SECRET_KEY
, вы должны получить это значение из среды. В принципе, вы можете использовать virtualenvwrapper.
Ответ №2:
Взгляните на пакет конфигураций Django.
Комментарии:
1. Вау. Это выглядит мило, может быть именно то, что мне нужно. Я проверю этот модуль. Спасибо за ответ! 🙂