这是一篇较旧的帖子,但我认为如果我添加这个有用的library 它将简化事情。
使用django-configuration
快速入门
pip install django-configurations
然后在项目的 settings.py 或您用于存储设置常量的任何其他模块中子类化包含的configurations.Configuration 类,例如:
# 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
或者在使用 Django 管理命令时按照 Django 的默认 --settings 命令行选项提供--configuration 选项,例如:
python manage.py runserver --settings=mysite.settings --configuration=Dev
要让 Django 使用您的配置,您现在必须修改您的 manage.py 或 wsgi.py 脚本以使用 django-configurations 的相应启动器功能版本,例如使用 django-configurations 的典型 manage.py 如下所示:
#!/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 的服务器一起使用。