Django 开发环境与生产环境配置分离方案

雨后青山
雨后青山
发布时间:2026-10-13 | 4人浏览过
原创

本文介绍如何在 Django 项目中通过环境变量区分开发与生产环境。无需修改默认 settings.py,而是根据是否存在特定环境变量动态导入不同的配置文件(如 dev_settings 或 prd_settings)。该方法支持在服务器端通过修改 /etc/profile 设置全局变量,并在运行 manage.py 时通过 --settings 参数指定具体配置模块,从而实现自动化部署与本地开发的一致性。

Django 环境配置概述

Django 开发环境与生产环境的设置

在常规的 Django 工程开发中,开发者经常面临本地开发环境与远程服务器生产环境配置不一致的问题。针对这些差异,传统的做法是直接修改生产环境中的配置文件。然而,对于追求自动化体系的开发者而言,这种做法显然不够严谨且难以维护。

因此,常规且推荐的做法是:既然存在不同的运行环境,就应当准备两份独立的配置文件以适配各自的需求。

准备配置文件

准备配置文件

在新建的 Django 项目中,应在与 settings.py 同级目录下准备两份不同的设置文件。


|____EveryDay
| |____prd_settings.py
| |______init__.py
| |____settings.py
| |____dev_settings.py
| |____urls.py
| |____wsgi.py

动态导入配置逻辑

从默认的 setting 中导入不同的配置

在此方案中,我们并不直接修改 Django 默认的 settings.py 模块。相反,我们通过辨别当前运行环境是生产环境还是开发环境,来决定加载哪一份配置。具体实现方式是设置一个仅在生产环境中存在的环境变量,然后在 settings.py 中判断该环境变量是否存在,从而决定导入哪一份配置文件。

show code:


# settings.py
import os

# Default settings between dev and prd

if os.environ.get('ENV', None):
  from .prd_settings import *
else:
  from .dev_settings import *

服务器环境变量设置

由于服务器使用的是 CentOS7,我们可以直接在 /etc/profile 文件中增加环境变量。


export ENV="SERVER"

运行时配置指定

从运行时中导入不同的配置

manage.py 在运行时还提供了 --settings 选项用于指定 settings 模块,因此使用 Django 自带的 debug 服务器启动时非常方便。


python manage.py rumserver 0.0.0.0:8000 --settings=EveryDay.prd_settings

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

本站声明

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

Python 相关产品和应用

全部下载

专题列表