Я думаю, что, хотя ваш код, вероятно, работает, он неоправданно сложен.Сложный код редко бывает полезен, потому что его трудно отлаживать, и ваш модуль настроек в последнюю очередь требует ошибок в вашем проекте Django.
Проще иметь файл settings.py
со всеми настройкамидля производственного сервера плюс настройки, общие для всех машин разработки, и в нижней его части импортируется local_settings.py
.local_settings.py
будет тогда, когда разработчики добавляют настройки, специфичные для их компьютеров.
settings.py :
# all settings for the production server,
# and settings common to all development machines eg.
# INSTALLED_APPS, TEMPLATE_DIRS, MIDDLEWARE_CLASSES etc.
# Import local_settings at the very bottom of the file
# Use try|except block since we won't have this on the production server,
# only on dev machines
try:
from local_settings import *
except ImportError:
pass
local_settings.py
# settings specific to the dev machine
# eg DATABASES, MEDIA_ROOT, etc
# You can completely override settings in settings.py
# or even modify them eg:
from settings import INSTALLED_APPS, MIDDLEWARE_CLASSES # Due to how python imports work, this won't cause a circular import error
INSTALLED_APPS += ("debug_toolbar",)
MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
Просто запомните , а не для загрузки local_settings.py
на рабочий сервер, а если вы используете VCS, сконфигурируйте его так, чтобы файл local_settings.py
игнорировался.