Django 多环境配置文件拆分与加载实战指南

一只小鹿
一只小鹿
发布时间:2026-10-13 | 2人浏览过
原创

本文详解 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 配置文件加载的内容,请搜索本站之前的文章或继续浏览后续相关文章。希望大家今后能多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表