Django 多环境配置文件拆分与加载实战指南
本文详解 Django 项目中如何拆分 settings.py 以支持多环境配置。通过将配置拆分为 base、dev 和 prod 文件,利用命令行参数或修改 manage.py 指定加载项,并在 uwsgi 部署中通过环境变量 DJANGO_SETTINGS_MODULE 实现生产环境隔离,确保开发与生产配置互不干扰。
在之前的文章中,我们已经介绍了 Django 多环境配置的基本概念,有兴趣的读者可以回顾查阅。本文将深入探讨 Django 多环境配置文件的具体加载机制,帮助您更好地理解和应用这一功能。
Django 多环境配置拆分与加载实战指南
准备工作
为了适应不同的开发环境并确保程序稳定运行且互不干扰,单一的 settings.py 文件往往难以满足需求。我们需要将其拆分为多个配置文件,并根据特定的运行环境动态加载相应的配置。一种常见的做法是将配置划分为四个主要文件。
__init__.py
base.py
dev.py
prod.py
基础架构
一个初始的 Django 项目目录结构通常如下所示:
mysite/
|-- mysite/
| |-- __init__.py
| |-- settings.py
| |-- urls.py
| +-- wsgi.py
+-- manage.py
接下来的操作是创建一个名为 settings 的文件夹,并将原有的 settings.py 重命名为 base.py,然后将其移入该文件夹中。
mysite/
|-- mysite/
| |-- __init__.py
| |-- settings/ <-- 新建的文件夹
| | |-- __init__.py <--
| | |-- base.py <-- 旧的 settings.py
| | |-- cli.py <-- 根据不同环境而新增的配置文件
| | |-- dev.py
| | +-- prod.py
| |-- urls.py
| +-- wsgi.py
+-- manage.py
base.py 作为基础配置文件,包含了所有环境通用的设置。其他特定环境的配置文件需要导入 base.py 中的内容,以便在此基础上进行扩展。
# settings/dev.py
from .base import *
DEBUG = True
INSTALLED_APPS += [
'debug_toolbar',
]
...
使配置文件生效
为了让 Django 识别并使用新的配置文件,一种方法是在命令行中通过 --settings 参数指定配置文件路径,例如:
python manage.py runserver --settings=mysite.settings.dev
python manage.py runserver --settings=mysite.settings.prod
python manage.py migrate --settings=mysite.settings.prod
如果您不希望每次执行命令时都手动传递 --settings 参数,可以通过修改 manage.py 文件来默认使用特定的配置文件。
# manage.py
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.dev") # 修改这个位置
...
服务器上的配置指定
在生产环境中,通常不会使用 runserver 命令运行 Django,而是采用 uwsgi 进行部署。此时,需要修改 mysite/wsgi.py 文件以指定使用的配置模块。
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.prod")
application = get_wsgi_application()
通过设置 DJANGO_SETTINGS_MODULE 环境变量,可以指向所需的配置文件,从而确保服务器运行时加载正确的配置。
Django settings 多环境配置具体步骤
接下来,我们将详细介绍 Django settings 多环境配置的具体步骤。
通常,我们会将本地开发和线上生产的配置分开,Django 不同环境的配置结构可以如下所示:
1. 在 settings.py 同级目录下创建 settings 文件夹。
2. 将 settings.py 移动到 settings 文件夹内,并将其重命名为 base.py。
3. 在 settings 文件夹中添加 dev.py 和 prod.py 文件,分别用于开发和生产环境。

4. 在 base.py 中,根目录路径应修改为:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(os.path.join(__file__, os.pardir))))
说明:
1)将公共配置放置在 base.py 中,而针对不同环境特有的配置则添加到 local.py 或 prod.py 中。
2)dev.py 和 prod.py 需要导入 base.py 中的配置,以确保基础设置的一致性。
from .base import *
DEBUG = True
#其他配置
3)在启动服务时,使用 --settings 参数指定具体的配置文件。
python manage.py runserver --settings=back-server.settings.dev
对于正式环境,若使用 uwsgi 进行部署,则需配置环境变量:DJANGO_SETTINGS_MODULE=back-server.settings.prod。
总结
至此,关于 Django 设置多环境配置文件加载的文章介绍完毕。如需了解更多关于 Django 配置文件加载的内容,请搜索本站之前的文章或继续浏览后续相关文章。希望大家今后能多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













