Это более старый пост, но я думаю, что если я добавлю это полезное, library
это упростит ситуацию.
Используйте django-configuration
Быстрый старт
pip install django-configurations
Затем подклассифицируйте включенный класс configurations.Configuration в файле settings.py вашего проекта или в любом другом модуле, который вы используете для хранения констант настроек, например:
# mysite/settings.py
from configurations import Configuration
class Dev(Configuration):
DEBUG = True
Задайте для DJANGO_CONFIGURATION
переменной среды имя только что созданного вами класса, например ~/.bashrc
:
export DJANGO_CONFIGURATION=Dev
и DJANGO_SETTINGS_MODULE
переменную среды в путь импорта модуля, как обычно, например, в bash:
export DJANGO_SETTINGS_MODULE=mysite.settings
В качестве альтернативы поставить --configuration
параметр при использовании команд управления Django вдоль линий по умолчанию Джанго --settings
опции командной строки, например:
python manage.py runserver --settings=mysite.settings --configuration=Dev
Чтобы позволить Django использовать вашу конфигурацию, вам теперь нужно изменить ваш скрипт manage.py или wsgi.py, чтобы использовать версии соответствующих стартовых функций django-configurations , например, типичный manage.py с django-конфигурациями будет выглядеть так:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
os.environ.setdefault('DJANGO_CONFIGURATION', 'Dev')
from configurations.management import execute_from_command_line
execute_from_command_line(sys.argv)
Обратите внимание, что в строке 10 мы не используем общий инструмент, django.core.management.execute_from_command_line
а вместо него configurations.management.execute_from_command_line
.
То же самое относится к вашему wsgi.py файлу , например:
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
os.environ.setdefault('DJANGO_CONFIGURATION', 'Dev')
from configurations.wsgi import get_wsgi_application
application = get_wsgi_application()
Здесь мы не используем значение по умолчанию django.core.wsgi.get_wsgi_application
функцию а вместо этого configurations.wsgi.get_wsgi_application
.
Это оно! Теперь вы можете использовать свой проект с manage.py и вашим любимым сервером с поддержкой WSGI.