Это старый пост, но я думаю, что если я добавлю это полезное library
, это упростит вещи.
Использование django-конфигурации
Quickstart
pip install django-configurations
Затем создайте подкласс включенных конфигураций. Класс конфигурации в файле settings.py вашего проекта или в любом другом модуле, который вы используете для хранения констант настроек, например ::
# mysite/settings.py
from configurations import Configuration
class Dev(Configuration):
DEBUG = True
Задайте для переменной среды DJANGO_CONFIGURATION
имя только что созданного класса, например, в ~/.bashrc
:
export DJANGO_CONFIGURATION=Dev
и переменная окружения DJANGO_SETTINGS_MODULE
к пути импорта модуля, как обычно, например, в баш:
export DJANGO_SETTINGS_MODULE=mysite.settings
В качестве альтернативы укажите параметр --configuration
при использовании команд управления Django в соответствии с параметром командной строки Django по умолчанию --settings
, например ::1010 *
python manage.py runserver --settings=mysite.settings --configuration=Dev
Чтобы позволить Django использовать вашу конфигурацию, вам теперь нужно изменить скрипт manage.py или wsgi.py , чтобы использовать версии соответствующих стартовых функций django-конфигураций, например, типичный 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.